2.FactoryMethod-工厂方法模式
来源:互联网 发布:狗讨厌什么味道 知乎 编辑:程序博客网 时间:2024/05/16 05:43
Factory Method 工厂方法模式
工厂方法模式:
- 核心,定义一个创建对象的接口/抽象类,让子类来决定实例化哪一个类,使实例化延迟到子类。
当有新的产品产生时,只要按照产品接口和工厂接口来生成,就可以被客户端使用,而不必改码.
所以工厂方法模式是完全符合开闭原则的。 - 工厂方法克服了简单工厂违背开放封闭原则的缺点,又保持了封装对象创建过程的优点。
降低了客户程序和产品对象之间的耦合。
- 核心,定义一个创建对象的接口/抽象类,让子类来决定实例化哪一个类,使实例化延迟到子类。
示例类图:
示例代码:
// 产品public interface Sender { public void send(String msg);}//具体产品public class MailSender implements Sender { @Override public void send(String msg) { System.out.println("MailSender send : " + msg); }}public class SmsSender implements Sender { @Override public void send(String msg) { System.out.println("SmsSender send : " + msg); }}// 定义一个创建对象的接口,让子类来决定实例化哪一个类,使实例化延迟到子类。public interface SenderFactory { public Sender getSender();}//具体工厂(每个具体工厂负责一个具体产品)public class MailSenderFactory implements SenderFactory { @Override public Sender getSender() { return new SmsSender(); }}public class SmsSenderFactory implements SenderFactory{ @Override public Sender getSender() { return new MailSender(); }}// 测试public class FactoryTest { public static void main(String[] args) { FactoryMethod(); } // 工厂方法模式测试 public static void FactoryMethod() { SenderFactory senderFactory = new MailSenderFactory(); Sender sender = senderFactory.getSender(); sender.send("MailSenderFactory"); new SmsSenderFactory().getSender().send("SmsSenderFactory"); }}
工厂方法是简单工厂的进一步抽象和推广,由于使用了多态性,所以每增加一个产品就要增加一个对应的产品工厂类,增加了额外的开发量。
当产品种类非常多时,就会出现大量的与之对应的工厂类,使用简单工厂模式与工厂方法模式相结合的方式可以减少工厂类:
即对于产品树上类似的种类(一般是树的叶子中互为兄弟的)使用简单工厂模式来实现。
0 0
- 2.FactoryMethod-工厂方法模式
- 2.FactoryMethod-工厂方法模式
- FactoryMethod 工厂方法模式
- 工厂方法模式(FactoryMethod)
- FactoryMethod 工厂方法模式
- factorymethod 工厂方法模式
- 设计模式--工厂方法(FactoryMethod)
- FactoryMethod(工厂方法)模式
- 工厂方法(FactoryMethod)模式
- 设计模式工厂方法(FactoryMethod)
- 工厂方法模式(FactoryMethod)
- 设计模式之--工厂方法模式(FactoryMethod )
- 设计模式 -- 工厂方法模式 FactoryMethod
- 设计模式之工厂方法模式(FactoryMethod)
- 设计模式-工厂方法模式-factorymethod-python
- 设计模式之FactoryMethod(工厂方法)
- 设计模式(二) 工厂方法(FactoryMethod)
- 创建型模式-FactoryMethod ( 工厂方法 )
- Jenkins进阶系列之——13修改Jenkins权限控制
- 什么是高内聚、低耦合
- bootloader之u-boot
- Qt线程---链接信号与槽的connect
- 1.SimpleFactory-简单(静态)工厂模式
- 2.FactoryMethod-工厂方法模式
- 【积累库】--Java 内部类(静态内部类)作用(198)
- 3.AbstractFactory-抽象工厂模式
- 4.Singleton-单例模式
- 5.Builder-建造者模式
- 6.Prototype-原型模式
- 7.Adapter-适配器模式
- 读取类所在目录路径
- 8.Decorator-装饰模式