王海挺学设计模式-工厂方法模式
来源:互联网 发布:淘宝官方话费充值平台 编辑:程序博客网 时间:2024/05/18 00:28
好了,已经一个星期没有写设计模式了,下面,我来学习工厂方法模式:
以前,我们学习过简单工厂模式,大家可以看看,我新浪中的博客:blog.sina.com.cn/0577it.
回顾一下,简单工厂模式:
客户程序,调用Factory,根据message来创建各种具体的类,再根据里氏原理,付值给AbstractProduct.由AbstractProduct调用方法实现.
我们先让简单工厂模式 vs.工厂方法:
1 、在简单工厂模式中,要增加一个功能类是这样做的:增加功能类;改工厂方法(是指那个有case语句的地方)。简单工厂模式的优点就是工厂类中包含了必要的逻辑判断,根据客户端的选择动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。
2、现在用工厂方法,就可以没有问题了,不需要改动。
工厂方法模式的定义:
一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
他的uml
我们说,简单工厂模式的这个工厂类与分支耦合,那么我们就对它下手,根据依赖倒转原则,我们把工厂类抽象出一个接口,这个接口的方法,就是创建抽象产品的工厂方法。然后,所有的要生产具体类的工厂,就去实现这个类,于是增加功能类后,就不需要去更改原来的工厂类了,但是需要重载新的工厂类。
这样整个工厂和产品体系没有修改的变化,而只有扩展的变化,这就完全符合了开放-封闭原则的精神。
其实,他的本质是:客户端需要决定实例化哪个工厂来实现功能类,选择判断依然存在。不过这个问题其实可以用反射的方法解决,见
blog.sina.com.cn/0577it.
- 王海挺学设计模式-工厂方法模式
- 设计模式--工厂方法
- 工厂方法设计模式
- 设计模式-工厂方法
- 【设计模式】【工厂方法】
- 设计模式 - 工厂方法
- 工厂方法设计模式
- 工厂方法设计模式
- 【设计模式】工厂方法
- 设计模式--工厂方法
- 设计模式---工厂方法
- 设计模式-工厂方法
- 工厂方法设计模式
- 工厂方法设计模式
- 设计模式-工厂方法
- 设计模式 工厂方法
- 工厂方法设计模式
- 工厂方法设计模式
- 多线程Java Socket编程示例
- AdoQuery的用法
- HeadFirst 设计模式学习笔记14——MVC分析
- tomcat与其他服务器集成
- Java基于Socket文件传输示例
- 王海挺学设计模式-工厂方法模式
- clamav
- template的编译和链接(源自深入浅出MFC)
- 上海之行,我是来要饭的
- Linux和android下测试键盘和触摸屏 && .kl文件中的WAKE和WAKE_DROPPED
- 基础--JAVA对Mysql进行连接、插入、修改、删除操作
- Struts 2 中对 request、response、session的获取
- 请问三个女儿的年龄分别是多少
- JVM(JAVA虚拟机介绍)