这里要说的是工厂方法模式。
1. 工厂方法模式的定义:工厂方法模式定义了创建对象的接口,但让子类来决定实例化哪个product类,推迟类的实例化到子类。
2. 工厂方法负责对象的创建,实际的对象创建在子类中进行。这使得父类的client code(调用工厂方法的代码)与子类的创建代码解藕。抽象方法在Creator的父类中定义,一般定义如下:
abstract Product factoryMethod(String type)
Creator子类必须实现工厂方法。实现了对interface编程而不是instance编程。符合“对扩展开放,对修改关闭”的OO原则。
3.工厂方法模式和简单工厂的区别:简单工厂父类has a factory,由factory来对product实例化。工厂方法模式中creator的父类中有一个抽象工厂方法,creator的子类负责实现这个方法即负责创建product实例。
4.工厂方法模式实现了依赖反转。如果不使用工厂方法模式,creator负责创建所有product子类,因此它依赖于所有具体的product子类。但工厂方法中creator和 product的子类都只依赖于抽象的product父类,实现了“依赖于接口,而不依赖于具体实现”的OO原则 。
5.依赖反转原则:
No variable should hold a reference to a concrete class.
不要用new,用工厂来创建。
No class should derive from a concrete class.
从接口继承,不要继承于具体类。
No method should override an implemented method of any of its base classes.
如果你重写父类已实现的方法,则你类并不是真正的抽象。父类实现的方法应该让所有子类共享。
这只是原则,并非法律!
简单工厂的好处:
1、充分利用了多态性不管什么具体产品都返回抽象产品。
2、充分利用了封装性,内部产品发生变化时外部使用者不会受到影响。
缺点是:如果增加了新的产品,就必须得修改工厂(Factory)。
这种没头没尾的文章确实不好,推荐一入篇好的设计模式的文章:
http://blog.csdn.net/xmouse/article/details/2281920
分享到:
相关推荐
又名: Head First Design Patterns 作者: (美)弗里曼(Freeman,E.) 副标题: Head First Design Patterns 简介 ······ 你不想重新发明车轮(或者更差的是,没有充气车胎的轮子),所以你从设计模式中寻求...
Head First Design Patterns 中文版 带目录 设计模式经典书籍
深入浅出设计模式(Head First Design Patterns)完整版,由本人精心整理网上的JPG版制作成PDF版供各位编程爱好者下载学习, 这部模式教程诙谐幽默,寓教于乐,实乃菜鸟成才必备之选。共分为11个压缩包,绝对的物有所...
深入浅出设计模式, 非常适合入门阅读, 英文浅显易读, 图文并茂, PDF版本,可以在手机上进行阅读.一本适合学习使用的书籍.
深入浅出设计模式(Head First Design Patterns)完整版,由本人精心整理网上的JPG版制作成PDF版供各位编程爱好者下载学习, 这部模式教程诙谐幽默,寓教于乐,实乃菜鸟成才必备之选。共分为11个压缩包,绝对的物有所...
深入浅出设计模式 Head First Design Patterns 英文影印版本,不是复印或者拍摄那种,非常清晰
head first design patterns是一本教您如何設計一個程式的書
《Head First Design Patterns》共有14章,每章都介绍了几个设计模式,完整地涵盖了四人组版本全部23个设计模式。前言先介绍《Head First Design Patterns》的用法;第1章到第11章陆续介绍的设计模式为Strategy、...
Pages from Head First Design Patterns (英文高清版)_part1.rar
这个压缩包是HeadFirst Design Patterns的源代码。希望能对有需要的人有所帮助
“Great code design is, first and foremost, great information design. A code designer is teaching a com- puter how to do something, and it is no surprise that a great teacher of computers should turn ...
软件设计模式中文版 &head; first python 。
HeadFirst Design Pattern in C#
head first design patterns-head first 设计模式的英文原版;高清英文原版,非扫描
Head First设计模式读书笔记-DesignPatterns
head first design patterns电子版本(第1部分)
Head First Design Patterns中文版
Head First Design Patterns 深入浅出设计模式 java 英文版 Head First Design Patterns 深入浅出设计模式 java 英文版