设计模式第二篇 工厂模式(2) 工厂方法模式 factory method
来源:互联网 发布:淘宝好友分享在哪里 编辑:程序博客网 时间:2024/05/16 01:27
简单工厂模式 (参见http://blog.csdn.net/zj_1395201/article/details/6648340)的核心是那个核心工厂类,其决定何时创建哪一个具体产品。这样做的优点可以使客户端不必负责产品的具体创建,只需要消费产品即可。但是缺点是如果具体产品的种类很多的话,核心工厂类中判断逻辑会很复杂,而且如果需要加入新的产品时,就需要将创建该新产品的逻辑加入到核心工厂类中去!
工厂方法模式是简单工厂模式的进一步抽象与推广,由于运用了多态性,既继承了简单工厂模式的优点,又客服了其缺点。下面我们就来解释下工厂方法模式:
工厂方法模式的核心工厂类不再决定创建具体的产品,而是将创建具体产品的操作交给了子工厂类,而子工厂会对应一个具体的产品,并且负责其的创建工作。所以我们可以看出,此时的核心工厂类已经变成了一个抽象工厂角色,仅仅向子工厂提供必须实现的接口。其工作结构如下图所示:
这种进一步抽象的效果可以达到在需要加入新产品的时候,不需要修改具体的工厂类的效果!
抽象工厂:
public interface Creator {public Fruit getFruit();}
具体工厂1:
public class AppleCreator implements Creator {@Overridepublic Fruit getFruit() {return new Apple();}}
具体工厂2:
public class GrapeCreator implements Creator {@Overridepublic Fruit getFruit() {// TODO Auto-generated method stubreturn new Grape();}}
抽象产品:
public interface Fruit {/** * 种植 */ public void plant(); }
具体产品1:
public class Grape implements Fruit {public Grape(){System.out.println("Grape is produced...");}@Overridepublic void plant() {System.out.println("Grape is plant...");}}
具体产品2:
public class Apple implements Fruit {public Apple(){System.out.println("Apple is produced...");}@Overridepublic void plant() {System.out.println("Apple is plant...");}}
客户端消费产品 :
public class Client {public static void main(String[] args) {Creator c1 = new AppleCreator();Fruit apple = c1.getFruit();System.out.println("=============");Creator c2 = new GrapeCreator();Fruit grape = c2.getFruit();}}
- 设计模式第二篇 工厂模式(2) 工厂方法模式 factory method
- 设计模式-工厂方法模式(factory method)
- 设计模式-工厂方法模式(Factory Method)
- 【设计模式】-工厂方法模式-Factory Method
- 设计模式 工厂方法模式 factory method
- 设计模式 工厂方法模式 Factory Method
- 设计模式第二节:Factory Method(工厂方法)
- 设计模式2:Factory Method Pattern(工厂方法模式)
- 设计模式2--工厂方法模式(Factory Method)
- 设计模式(2):工厂方法模式(Factory Method Pattern)
- 设计模式 一 工厂方法Factory Method(工厂模式)
- 设计模式案例--工厂模式--工厂方法(factory method)
- 设计模式(1)-工厂方法(Factory Method)
- 【初学设计模式】Factory Method (工厂方法)
- 设计模式学习-Factory Method(工厂方法)
- 设计模式-工厂方法(Factory Method)
- factory method(工厂方法设计模式)
- 【设计模式】之 Factory Method 工厂方法
- C#编程实现计算器
- 【笔试面试知识点查缺补漏深入理解之C与C++篇】浅析exit函数
- ubnunt下Android源码下载
- poj2498
- php 5.3新特性的phar
- 设计模式第二篇 工厂模式(2) 工厂方法模式 factory method
- 小结一下linux 2.6内核的四种IO调度算法
- ubuntu中找不到头文件term.h和curses.h的原因
- 从 Qt 的 delete 说开来
- 图--图的存储结构
- Android中使用google Analytics
- Qt中多线程系列之线程控制
- linux内核中的链表
- unubtu下安装VMtools