设计模式2--工厂方法模式(Factory Method)
来源:互联网 发布:ubuntu 一键lamp 编辑:程序博客网 时间:2024/05/16 09:17
工厂方法模式的本质:延迟到子类来选择实现
package com;public interface Api {void opreation(String s);}
package com.impl;import com.Api;public class ImplA implements Api {@Overridepublic void opreation(String s) {System.out.println("我是A的实现:" + s);}}
package com.impl;import com.Api;public class ImplB implements Api {@Overridepublic void opreation(String s) {System.out.println("我是B的实现:" + s);}}
import com.Api;public abstract class AbstractFactory {public void opreation(String s){Api api = factoryMethed();api.opreation(s);}protected abstract Api factoryMethed();}
import com.Api;import com.impl.ImplA;public class FactoryA extends AbstractFactory{protected Api factoryMethed(){return new ImplA();}}
import com.Api;import com.impl.ImplB;public class FactoryB extends AbstractFactory{protected Api factoryMethed(){return new ImplB();}}
public class Client {public static void main(String[] args){AbstractFactory fA = new FactoryA();fA.opreation("SHIXIN");AbstractFactory fB = new FactoryB();fB.opreation("AXUE");}}
从本质上讲,它们确实是非常类似的,在具体的实现上都是“选择实现”。但是也存在不同点,简单工厂是直接在工厂类里面进行“选择实现”;而工厂方法会把这个工作延迟大盘子类来实现,工厂类里面使用工厂方法的地方是依赖于抽象而不是具体的实现,从而使得系统更加灵活,具有更好的维护性和可扩展性。
从某个角度来讲,可以认为简单工厂就是工厂方法模式的一种特例,因此它们的本质是类似的,也就不足为奇了。
建议在以下情况中选用工厂方法模式:
1 如果一个类需要创建某个接口的对象,但是又不知道具体的实现,这种情况下可以选用工厂方法模式,把创建对象的工作延迟到子类去实现。
2 如果一个类本身就希望由他的子类来创建所需要的对象的时候,应该使用工厂方法模式。
- 设计模式2:Factory Method Pattern(工厂方法模式)
- 设计模式2--工厂方法模式(Factory Method)
- 设计模式(2):工厂方法模式(Factory Method Pattern)
- 设计模式-工厂方法(Factory Method)
- 工厂方法(Factory Method)设计模式
- 设计模式 一 工厂方法Factory Method(工厂模式)
- 设计模式-工厂方法模式(factory method)
- 设计模式-工厂方法模式(Factory Method)
- 【设计模式】-工厂方法模式-Factory Method
- 设计模式 工厂方法模式 factory method
- 设计模式 工厂方法模式 Factory Method
- .NET设计模式:工厂方法模式(Factory Method)
- Java设计模式-工厂方法(Factory Method)模式
- 设计模式之Factory Method(工厂方法模式)
- 设计模式(一) Factory Method工厂方法模式
- 代码设计模式之工厂方法模式(Factory Method)
- 设计模式之一 工厂方法模式(Factory Method)
- [设计模式]工厂方法模式(Factory Method)
- 永成科技C++笔试题
- 【ARM学习笔记】五、操作系统Operation System和内存管理单元MMU
- ASP.NET三层架构介绍及数据库配置方法
- 自己修改的Ajax注册和登录验证
- Win7系统中bat 后缀文件关联程序恢复
- 设计模式2--工厂方法模式(Factory Method)
- WDF驱动开发(2)- CONTEXT和IO QUEUE
- 打印当前时间
- 主流网站开发技术的对比
- Microsoft IExpress:微软自带的安装程序包制作工具
- Visual Assist X 10.8.2007的Crack破解补丁.支持VS2013 RTM. 2013.11.15 (General release.)
- 常用的按钮文字旁边带icon的CSS
- c# 调用webservice传递序列化对象
- 汉诺塔