《大话设计模式》—— 读后感(8)雷锋依然在人间——工厂方法模式
来源:互联网 发布:数据库中各表的结构 编辑:程序博客网 时间:2024/05/19 00:09
工厂方法模式
定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。(摘抄)
工厂方法模式和简单工厂模式都是用于去创建新的类,但是工厂方法模式传承了简单工厂模式封装对象创建的过程,同时也改掉了简单工厂模式违背开放——封闭原则的缺点。
简单工厂模式,如果需要生产/去掉一个子类的话,那么需要在SimpleFactory类中修改 switch case 语句,所以违背了开放——封闭原则。
工厂方法创建对象是通过子工厂来创建,所以添加或删除子类的话是不需要改变原有的代码的。
class Factory{public Product create() {// TODO Auto-generated method stubreturn null;}}class AFactory extends Factory{public Product create() {// TODO Auto-generated method stubreturn new AProduct();}}class BFactory extends Factory{public Product create() {// TODO Auto-generated method stubreturn new BProduct();}}class Product{public void domethod() {// TODO Auto-generated method stub}}class AProduct extends Product{public void domethod() {// TODO Auto-generated method stub}}class BProduct extends Product{public void domethod() {// TODO Auto-generated method stub}}//新增类class CFactory extends Factory{public Product create(){return new CProduct();}}class CProduct extends Product{public void domethod(){}}public static void main(){Factory factory = new AFactory();Product product = factory.create();product.domethod();//新增一个类的话,那么只需要添加,而不需要修改原有代码,因为生产类的判断交给了客户端factory = new CFactory();Product newP = factory.create();newP.domethod();}
工厂方法模式差不多也就这样,还是那句话实际使用中必须活学活用,多种模式结合出来的四不像模式,也许才是正确的使用方法。。。
话说《大话》的例子越来越扯了。。。感觉解释还是蛮清楚,就是例子有点蛋疼,但是我也还蛮佩服作者,这样子也可以圆过来。。。
好希望自己把这本书看完之后,可以去看下那本Gof写的原版的设计模式,正好提升一下英文水平
0 0
- 《大话设计模式》—— 读后感(8)雷锋依然在人间——工厂方法模式
- 《大话设计模式》——读后感 (5)雷锋依然在人间?——工厂方法模式
- 雷锋依然在人间—工厂方法模式
- 《大话设计模式》之--第8章 雷锋依然在人间----工厂方法模式
- 《大话设计模式》之--第8章 雷锋依然在人间----工厂方法模式
- 第8章 雷锋依然在人间-工厂方法模式 大话设计模式
- 《大话设计模式》--雷锋依然在人间--工厂方法模式<Factory Method>(8)
- 【设计模式】雷锋依然在人间 --- 工厂方法模式
- 大话设计模式-第08章 雷锋依然在人间--工厂方法模式
- 雷锋依然在人间 --- 工厂方法模式
- 工厂方法模式Python版--雷锋依然在人间
- 第八章 雷锋依然在人间-工厂方法模式(读书笔记)
- 第八章 雷锋依然在人间---工厂方法模式(读书笔记)
- 8. 雷锋依然在人间 -- 工厂方法模式(Factory Method Pattern)
- 【大话设计模式】—— 工厂方法模式
- 大话设计模式C++版——工厂方法模式
- 《大话设计模式》—— 读后感 (10)考题抄错会做也白搭——模板方法模式
- 大话设计模式—工厂模式
- 1Z0-051 QUESTION 4 单行函数Single-Row Functions
- 左耳朵耗子谈云计算:拼的就是运维
- C语言可变长参数实现原理
- PL/SQL远程备份和恢复Oracle数据库
- 转:金庸笔下的良好代码风格
- 《大话设计模式》—— 读后感(8)雷锋依然在人间——工厂方法模式
- C++重载加号运算符实现两个结构体的相加
- 虚函数、纯虚函数
- 嵌入式linux flash分区配置 【转】
- 软件体系结构风格---基于事件的隐式调用
- Oracle 用户管理(二)
- POJ-2349 Arctic Network 最小生成树
- 嵌入式Linux学习规划
- Apache轻量级性能测试工具--ab