工厂方法模式--结合具体例子学习工厂方法模式
2014-03-22 00:00
281 查看
在学习工厂方法模式之前,可以先学习一下简单工厂模式,网址是/article/1465061.html,这里仍以水果的实例讲解。
先来说说简单工厂模式的特点,简单工厂模式将具体类的创建交给了工厂,使客户端不再直接依赖于产品,但是其违背了OCP原则,当对系统进行扩展时,仍然需要去修改原有的工厂类的代码。
而工厂方法模式则解决了这一问题,在工厂方法模式中,核心工厂类不再负责产品的创建,而把其延迟到其子类当中,核心工厂类仅仅为其子类提供必要的接口。
现在,结合下面的例子具体的理解一下工厂方法模式:
定义一个工厂接口,让具体的工厂类去实现它,从代码中不难看出,当对代码进行扩展时,比如要加入一个Grape类,只需要定义一个Grape类,并定义一个Grape的工厂类GrapeFactory去继承工厂接口即可,而不必对原有的代码进行修改,完全符合OCP原则
先来说说简单工厂模式的特点,简单工厂模式将具体类的创建交给了工厂,使客户端不再直接依赖于产品,但是其违背了OCP原则,当对系统进行扩展时,仍然需要去修改原有的工厂类的代码。
而工厂方法模式则解决了这一问题,在工厂方法模式中,核心工厂类不再负责产品的创建,而把其延迟到其子类当中,核心工厂类仅仅为其子类提供必要的接口。
现在,结合下面的例子具体的理解一下工厂方法模式:
interface Fruit{ public String tell(); } interface Factory{ public Fruit getFruit(); } //苹果类 class Apple implements Fruit{ public String tell(){ return "我是苹果"; } } //香蕉类 class Banana implements Fruit{ public String tell(){ return "我是香蕉"; } } class AppleFactory implements Factory{ public Fruit getFruit(){ return new Apple(); } } class BananaFactory implements Factory{ public Fruit getFruit(){ return new Banana(); } } public class Store { public static void main(String[] args) { Fruit f= null; Factory factory = null; factory=new AppleFactory(); f= factory.getFruit(); System.out.println( f.tell()); factory=new BananaFactory(); f=factory.getFruit(); System.out.println( f.tell()); } }
定义一个工厂接口,让具体的工厂类去实现它,从代码中不难看出,当对代码进行扩展时,比如要加入一个Grape类,只需要定义一个Grape类,并定义一个Grape的工厂类GrapeFactory去继承工厂接口即可,而不必对原有的代码进行修改,完全符合OCP原则
相关文章推荐
- 工厂方法模式--结合具体例子学习工厂方法模式
- 工厂方法模式--结合具体例子学习工厂方法模式
- Head First 设计模式学习——简单工厂方法-工厂方法模式-抽象工厂模式
- 跟着实例学习设计模式(3)-工厂方法(创建型)
- 设计模式学习之简单工厂、工厂方法、抽象工厂
- 学习设计模式——工厂方法
- JAVA设计模式学习之----创建模式:工厂模式(工厂方法)
- 简单工厂模式--结合实例学习简单工厂模式
- 设计模式学习笔记:抽象工厂和工厂方法的区别
- head first 设计模式学习之 简单工厂,工厂方法和抽象工厂
- 设计模式之工厂模式结合单例模式C++计算器代码DEMO(历史代码,贴出学习)
- 设计模式学习笔记三:工厂方法模式
- 工厂模式例子(用面向对象的方法实现简单的计算器)
- iOS经常使用设计模式——工厂方法(简单工厂模式,工厂方法模式, 抽象工厂模式)
- 设计模式学习笔记三:工厂方法模式
- JNI学习笔记(四)JNI中本地语言创建Java对象并且访问具体方法(附例子)
- 设计模式实例学习-工厂方法
- 学雷锋之工厂方法模式学习笔记[C++版]
- java反射学习(结合工厂方法)
- 设计模式学习笔记四:工厂方法(Factory Method)