学习笔记-轻量级Java EE:模式--工厂方法和抽象工厂
2014-01-03 11:40
411 查看
在简单工厂模式上再次细分,为不同的产品类提供不同的工厂,即不同的工厂类生成不同的产品。
与简单工厂一样,在添加新产品时,不会影响原有的代码,仅仅需要添加新的工厂类生产新产品即可;在抽象工厂中改变添加逻辑判断即可,有很好的扩展性和维护性
提供一个工厂接口:
在此,我们可以在增加一个工厂类,该工厂类不生产具体产品,而是生产产品工厂类,这种方式称之为抽象工厂模式;
例子:
与简单工厂一样,在添加新产品时,不会影响原有的代码,仅仅需要添加新的工厂类生产新产品即可;在抽象工厂中改变添加逻辑判断即可,有很好的扩展性和维护性
提供一个工厂接口:
public interface OutputFactory { //仅定义一个方法用于返回输出设备。 Output getOutput(); }以下俩个产品的工厂类继承该工厂接口:
public class PrinterFactory implements OutputFactory { public Output getOutput() { //该工厂只负责产生Printer对象 return new Printer(); } }
public class BetterPrinterFactory implements OutputFactory { public Output getOutput() { //该工厂只负责产生BetterPrinter对象 return new BetterPrinter(); } }测试代码:
public static void main(String[] args) { //使用PrinterFactory子类来创建OutputFactory OutputFactory of = new BetterPrinterFactory(); //将Output对象传入,创建Computer对象 Computer c = new Computer(of.getOutput()); c.keyIn("轻量级Java EE企业应用实战"); c.keyIn("疯狂Java讲义"); c.print(); }由上可看出,每个工厂类只生产一个产品(可修改,一个工厂类可生产多个产品),虽然与具体的产品已解耦,但增加了一个问题,客户端不仅仅与工厂接口耦合,且与具体的产品工厂类耦合
在此,我们可以在增加一个工厂类,该工厂类不生产具体产品,而是生产产品工厂类,这种方式称之为抽象工厂模式;
例子:
public class OutputFactoryFactory { //仅定义一个方法用于返回输出设备。 public static OutputFactory getOutputFactory( String type) { if (type.equalsIgnoreCase("better")) { return new BetterPrinterFactory(); } else { return new PrinterFactory(); } } }测试代码:
public static void main(String[] args) { //使用PrinterFactory子类来创建OutputFactory OutputFactory of = OutputFactoryFactory .getOutputFactory("better"); //将Output对象传入,创建Computer对象 Computer c = new Computer(of.getOutput()); c.keyIn("轻量级Java EE企业应用实战"); c.keyIn("疯狂Java讲义"); c.print(); }这样,将客户端代码与具体的产品工厂类实现了解耦。
相关文章推荐
- 学习笔记-轻量级Java EE:模式--简单工厂
- 设计模式学习笔记三:工厂方法模式
- head first 设计模式学习之 简单工厂,工厂方法和抽象工厂
- C++设计模式学习笔记五:工厂方法模式
- 学习笔记-轻量级Java EE:模式--观察者模式
- Design Pattern学习笔记之工厂(简单工厂、工厂方法、抽象工厂)
- 学雷锋之工厂方法模式学习笔记[C++版]
- 学习笔记-轻量级Java EE:模式--策略模式
- C#面向对象设计模式纵横谈 学习笔记5 Factory Method 工厂方法(创建型模式)
- 设计模式学习笔记(五):工厂方法模式
- 设计模式学习笔记:factory method(工厂方法)
- 学习笔记-轻量级Java EE:模式--桥接模式
- 设计模式学习笔记:抽象工厂和工厂方法的区别
- 设计模式学习笔记-工厂方法
- 设计模式学习笔记四:工厂方法(Factory Method)
- 设计模式学习003——工厂模式(工厂方法、抽象工厂),简单工厂【也叫静态工厂】
- 学习笔记-轻量级Java EE:模式--命令模式
- [设计模式学习笔记二][创建型模式][工厂方法(Factory Method)]
- 设计模式学习笔记四:工厂方法(Factory Method)
- iOS学习笔记(5)——设计模式之工厂方法、抽象工厂