标签:多个 基础 里氏替换 设计模式 singleton aced 实际应用 lis 创建对象
1、设计模式的发展史
设计模式来源于建筑行业,20世纪的70年代,Christopher Alexander在研究为解决同一个问题而设计出的不同建筑结构时,发现那些高质量的设计中有很强的相似性。提出用“模式语言”来指代这种相似性。在Christopher Alexander的经典著作《建筑的永恒之道》中,给出了关于模式的定义:
模式描述一个在我们所处环境中不断出现的问题,已经该问题的解决方案的核心。通过模式,我们可以重复利用已有的成功解决方案。
(A pattern is a successful or efficient solution to a recurring problem within a context)
注:《A pattern Language:Towns,Buildings,Construction》(牛津大学出版社 1997年);《永久的建筑风格》(牛津大学出版社 1979年)
1987年,Kent Beck和Ward Cunningham 把建筑学上的模式观点应用到软件的设计和开发。他们使用Small talk语言实现了雅致的用户界面。利用这个科技成果,他们在1987年召开了“面向对象的编程系统、语言和应用程序(OOPSIA)研讨会”,在会上以《在面向对象编程中使用模式语言》的演讲。
1994年,由Erich Gamma、Richard Helm、Ralph Johnson 和John Vlissides(模式四剑客 GoF) 合作编写《设计模式:可复用面向对象软件的基本原理》一书,书中明确定义了23中模式,成为现代软件设计模式的基础。
软件模式不只仅限于设计模式,还包括系统架构模式、需求分析模式和过程模式等,实际上,在软件开发生命周期的每一个阶段都存在着一些被认同的模式。
2、设计模式概述
设计模式一般包含以下内容:
3、模式设计的基本原则
模式设计有六大基本原则:
单一职责原则: 一个类只负责一项职责。
里氏替换原则:所有引用基类的地方必须能透明地使用其子类的对象。
依赖倒置原则:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。
接口隔离原则:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。
迪米特法则:一个对象应该对其他对象保持最少的了解。
开闭原则:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。
4、设计模式的分类
根据设计模式的用途,设计模式主要分为三个类别:
单例模式(Singleton Pattern):应用中的某个功能模块需要保证其唯一性,不能同时并存多个实例,否则会引起信息或者资源的冲突,这个时候就需要用到单例模式,以保证对象实例化的唯一性。
简单工厂模式(simple Factory Pattern):
工厂方法模式(Factory Method Pattern)
抽象工厂模式(Abstract Factory Pattern)
原型模式(Prototype Pattern)
建造者模式(Builder Pattern)
适配器模式(Adapter Pattern)
桥接模式(Bridge Pattern)
组合模式(Composite Pattern)
装饰模式(Decorator Pattern)
外观模式(Facede Pattern)
享元模式(Flyweight Pattern)
代理模式(Proxy Pattern)
职责链模式(Chain of Responsibility Pattern)
命令模式(Command Pattern)
解释器模式(Interpreter Pattern)
迭代模式(Iterator Pattern)
中介模式(Mediator Pattern)
备忘录模式(Memento Pattern)
观察者模式(Observer Pattern)
状态模式(State Pattern)
策略模式(Strategy Pattern)
模板方法模式(Template Method Pattern)
访问者模式(Visitor Pattern)
后续的学习中会对每个模式进行详细的描述和例证,同时会更新本文档。
标签:多个 基础 里氏替换 设计模式 singleton aced 实际应用 lis 创建对象
原文地址:http://www.cnblogs.com/jianwei-hu/p/7130309.html