设计模式学习小结——第一篇 原则和工厂的比较
2008-07-28 11:43
274 查看
* 忘掉模式可以记得的有几个原则:
* (SRP)单一职责原则——就一个类而言,应该近有一个引起它变化的原因。
* 开放—封闭原则——可扩展,但不可修改。
* 依赖倒置原则——抽象不应该依赖细节、细节应该依赖于抽象。说白了要针对接口编程。
* LSP(里氏代换原则)——子类型必须能够替换掉他们的父类型。
* LoD(迪米特法则)——如果两个类不必彼此直接通信,那么这两个类就不应当直接的相互作用。如果其中一个类需要调用另一个类的某一个的
方法的话,可以通过第三者转发这个调用。
* 三工厂模式的比较:
* 简单工厂:一个工厂,相关类的对象变化的逻辑判断封装的工厂内。
* 优点:处客户端不用考虑对象的变化。减少客户端和相关对象的耦合。
* 缺点:违背开放-封闭原则,需求变化总要修改工厂的判断逻辑(如果用反射可以解决)。
* 工厂方法模式:工厂类依赖相应所产生对象的类。
* 优点:针对接口编程,让子类决定实例那个类的对象,符合开放封闭-原则。
* 缺点:工厂方法怕简单工厂的内部逻辑判断转移到客户端的代码,增加客户端和实例对象的耦合。
* 抽象工厂:产品抽象出接口,工厂抽象出接口,具体工厂依赖具体产品。
* 优点:变化可配置,让具体的创建实例过程与客户端分离,客户端是通过它们的抽象接口操纵实例,产品的具体类名也被具体工厂的实现分离不会出现在客户代码中。
* 综合杂谈:简单工厂使用在产品对象变化相对稳定的场合,工厂方法产品不稳定但数量不多的地方,抽象工厂会不会类爆炸(担心中,从UML图中看出依赖较多),简单工厂改进抽象工厂后通过反射配置文件是个解决数据访问的好方案。
(预:第二篇代理、委托和事件)
* (SRP)单一职责原则——就一个类而言,应该近有一个引起它变化的原因。
* 开放—封闭原则——可扩展,但不可修改。
* 依赖倒置原则——抽象不应该依赖细节、细节应该依赖于抽象。说白了要针对接口编程。
* LSP(里氏代换原则)——子类型必须能够替换掉他们的父类型。
* LoD(迪米特法则)——如果两个类不必彼此直接通信,那么这两个类就不应当直接的相互作用。如果其中一个类需要调用另一个类的某一个的
方法的话,可以通过第三者转发这个调用。
* 三工厂模式的比较:
* 简单工厂:一个工厂,相关类的对象变化的逻辑判断封装的工厂内。
* 优点:处客户端不用考虑对象的变化。减少客户端和相关对象的耦合。
* 缺点:违背开放-封闭原则,需求变化总要修改工厂的判断逻辑(如果用反射可以解决)。
* 工厂方法模式:工厂类依赖相应所产生对象的类。
* 优点:针对接口编程,让子类决定实例那个类的对象,符合开放封闭-原则。
* 缺点:工厂方法怕简单工厂的内部逻辑判断转移到客户端的代码,增加客户端和实例对象的耦合。
* 抽象工厂:产品抽象出接口,工厂抽象出接口,具体工厂依赖具体产品。
* 优点:变化可配置,让具体的创建实例过程与客户端分离,客户端是通过它们的抽象接口操纵实例,产品的具体类名也被具体工厂的实现分离不会出现在客户代码中。
* 综合杂谈:简单工厂使用在产品对象变化相对稳定的场合,工厂方法产品不稳定但数量不多的地方,抽象工厂会不会类爆炸(担心中,从UML图中看出依赖较多),简单工厂改进抽象工厂后通过反射配置文件是个解决数据访问的好方案。
(预:第二篇代理、委托和事件)
相关文章推荐
- 设计模式学习小结——第一篇 原则和工厂的比较
- 设计模式学习笔记--模式比较(五)
- C#学习笔记之简单工厂设计模式
- [Design]设计模式-- 为什么要学习设计原则/模式
- 设计模式学习小结(1.1)——工厂模式
- 设计模式学习小结(3.3)——状态模式
- GOF设计模式学习小结(一)
- Java-马士兵设计模式学习笔记-工厂模式-简单工厂
- Java-马士兵设计模式学习笔记-工厂模式-用Jdom模拟Spring
- 设计模式学习笔记:六大原则
- 工厂设计模式最佳实践小结
- 设计模式学习(一):设计模式概述及面向对象设计原则
- JAVA与模式学习笔记之设计原则
- 设计模式学习1----工厂模式(计算器)
- 设计模式学习--面向对象的5条设计原则(转)
- 2.A计划学习-游戏设计模式(一)--面向对象的设计原则
- 设计模式学习之——六大设计原则之一:单一职责原则
- 设计模式的学习-(2)简单工厂模式
- 学习设计模式之禅——6大设计原则
- 设计模式学习笔记--工厂(Factory)、建造(Builder)和原型(Prototype)