java设计模式-工厂模式
工厂模式种类
工厂模式可以分为三类:简单工厂模式,工厂方法模式以及抽象工厂模式。
简单工厂模式
简单工厂模式又称为静态工厂方法模式,为何称为静态工厂方法模式呢?是因为该模式主要由一个工厂类的静态方法来提供各种产品。
简单工厂模式的优点
这里假设有三个角色:消费者,生产者和产品。通过简单工厂模式消费者并不需要关心产品是如何生产出来的,也不需要关心产品制造的具体流程,只需要直接去生产者那里直接购买便可。这在一定程度上实现了生产者和产品之间的解耦,每个角色之间的分工变得更加明确。
简单工厂模式示例
产品接口
public interface Phone { //产品类所继承的公共接口,也可以为抽象类 public String getPhoneName(); }
产品
/** * 苹果生产商 */ public class IPhone implements Phone { @Override public String getPhoneName() { return "我们生产苹果手机"; } } /** * vivo生产商 */ public class VivoPhone implements Phone { @Override public String getPhoneName() { return "我们生产vivo手机"; } } /** * 华为生产商 */ public class HuaWeiPhone implements Phone { @Override public String getPhoneName() { return "我们生产华为手机"; } }
工厂
/** * 工厂负责生产各种手机,这里的生产可以理解为对象的创建 */ public class Factory { //苹果手机 private static final String APPLE = "apple"; //vivo手机 private static final String VIVO = "vivo"; //华为手机 private static final String HUAWEI = "huawei"; //根据用户的选择来提供手机 public static Phone create(String name) { switch (name) { case APPLE: return new IPhone(); case VIVO: return new VivoPhone(); case HUAWEI: return new HuaWeiPhone(); default: return null; } } }
消费者(客户端)
/** * 消费者 */ public class Customer { public static void main(String[] args) { //用户买个苹果手机 Phone phone = Factory.create("apple"); System.out.println(phone.getPhoneName()); //用户买个华为手机 Phone phone2 = Factory.create("huawei"); System.out.println(phone2.getPhoneName()); } }
输出结果: