首页 > 代码库 > 设计模式介绍
设计模式介绍
设计模式
设计原则
开闭原则(OCP):对扩展开放,对修改关闭
里氏代换原则(LSP):子类型必须能够替换它们的基类型
依赖倒置原则(DIP):要依赖于抽象,不依赖于具体
接口隔离原则(ISP):每个接口是一种角色,不多不少,不干不该干的事,该干的事都要干
迪米特法则(LoD)【又叫最少知识原则(LKP)】:高内聚低耦合(一个对象对其它对象有尽可能少的了解)
合成/聚合复用原则(CARP):尽量使用合成/聚合,尽量不要使用继承
设计模式的分类
按照目的分:
创建型:(与类和对象的创建有关)
工厂方法模式:定义一个接口用于创建对象,但是让子类决定实例化哪个类。把一个类的实例化下放到子类
抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
单例模式:确保一个类只有一个实例,并提供对该实例的全局访问。
建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
原型模式:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。
结构型:(处理类与对象的组合关系)
适配器模式:将某个类的接口转换成客户端期望的另一个接口表示。
装饰器模式:向某个对象动态的添加更多的功能。
代理模式:为其他对象提供一个代理以控制对这个对象的访问。
外观模式:为子系统的一组接口提供一个一致的界面。
桥接模式:将抽象与实现解耦,以便两者可以独立变化。
组合模式:把多个对象组成树状结构来表示局部与整体。
享元模式:通过共享以便有效的支持大量小颗粒对象。
行为型:(主要对类或对象如何怎样交互和如何分配职责进行描述)
策略模式:定义一个算法的系列,将其各个分类,并且使他们有交互性。
模板方法模式:模板方法模式准备一个抽象类,将部分逻辑以具体方法及具体构造子类的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。
观察者模式:在对象期间定义一个一对多的联系,当一个对象改变时,所以其他相关的对象会被通知并且自动刷新。
访问者模式:封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改,接受这个操作的数据结构可以保持不变。
迭代子模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不需暴露该对象的内部表示。
责任链模式:为解除请求的发送者和接收者之间的耦合,而使多个对象都有机会处理这个请求,需要将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。
命令模式:将一个请求封装为一个对象,从而使用户可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可取消的操作。
备忘录模式:备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捉住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。
状态模式:让一个对象在其内部状态改变的时候,其行为也随之改变。状态模式需要对每一个系统可能取得的状态创立一个状态类的子类。当系统的状态变化时,系统便改变所选的子类。
中介模式:包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用,从而使它们可以松散偶合。当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用,保证这些作用可以彼此独立的变化。
解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。
按照范围分:
类模式:主要处理类和子类之间的关系,这些关系通过继承建立,是静态的,在编译时刻便确定下来了。
对象模式: 主要处理对象间的关系,在运行时刻是可变的,更具动态性,大部分的模式都是对象模式。