设计模式原则和分类

设计模式原则和分类

从今天开始学习设计模式,主要参考博览网的C++设计模式教程

设计模式原则

1.依赖倒置原则(DIP,Dependence Inversion Principle )
- 高层次的模块(稳定)不应该依赖于低层次的模块(变化),二者都应该依赖于抽象。
- 抽象(稳定)不应该依赖于实现细节,实现细节应该依赖于抽象。

我从c++的角度来理解:高层次的模块指基类,低层次的模块是指派生类,基类不应该依赖于派生类;抽象是指基类中的接口,基类派生类都应该依赖于接口,实现细节是指接口的具体实现,接口的具体实现当然应该依赖于接口本身。

2.开放封闭原则(OCP,Open Closed Principle)
- 对扩展开放,对更改封闭。

对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。
对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,而不要对类进行任何修改,因为修改的代价太大了,可能牵一发而动全身。

3.单一职责原则(SRP:Single responsibility principl)
- 一个类应该有且仅有一个引起它变化的原因。
- 变化的方向隐含这着类的职责。

这个原则不是很理解,等哪天理解深刻了,再来写。

4.里氏替换原则(LSP,Liskov Substitution Principle )
- 派生类必须能够替换它们的基类。

在c++中,public继承意味着派生类和基类是”is a”关系,也就意味着适用于基类身上的每一件事也一定适用于派生类,基类出现的地方,派生类就可以代替其出现。

5.接口隔离原则(ISP,Interface Segregation Principle )
- 不应该强迫客户端依赖它们不需要的接口或者方法。
- 接口应该小而完备,一个类对另一个类的依赖应该建立在最小的接口上。

设计模式分类:

一.从目的来看:

  • 1.创建型模式:将对象的部分创建工作延迟到子类或者其他对象,从而应对需求变化为对象创建时具体类型实现引来的冲击。
    单例模式(Singleton Pattern)
    工厂模式(Factory Pattern)
    抽象工厂模式(Abstract Factory Pattern)
    建造者模式(Builder Pattern)
    原型模式(Prototype Pattern)

  • 2.结构型模式:通过类继承或者对象组合获得更灵活的结构,从而应对需求变化为对象的结构带来的冲击。
    适配器模式(Adapter Pattern)
    桥接模式(Bridge Pattern)
    组合模式(Composite Pattern)
    装饰器模式(Decorator Pattern)
    外观模式(Facade Pattern)
    享元模式(Flyweight Pattern)
    代理模式(Proxy Pattern)

  • 3.行为型模型:通过类继承或者对象组合来划分类与对象间的职责,从而应对需求变化为多个交互的对象带来的冲击。
    责任链模式(Chain of Responsibility Pattern)
    命令模式(Command Pattern)
    解释器模式(Interpreter Pattern)
    迭代器模式(Iterator Pattern)
    中介者模式(Mediator Pattern)
    备忘录模式(Memento Pattern)
    观察者模式(Observer Pattern)
    状态模式(State Pattern)
    策略模式(Strategy Pattern)
    模板模式(Template Pattern)
    访问者模式(Visitor Pattern)

二.从封装变化角度对模式分类

  • 1.组件协作:
    •模板模式 Template Method
    •观察者模式 Observer
    •策略模式 Strategy

  • 2.单一职责:
    •装饰器模式 Decorator
    •桥接模式 Bridge

  • 3.对象创建:
    •工厂模式 Factory Method
    •抽象工厂模式 Abstract Factory
    •原型模式 Prototype
    •建造者模式 Builder

  • 4.对象性能:
    •单例模式 Singleton
    •享元模式 Flyweight

  • 5.接口隔离:
    •外观模式 Facade
    •代理模式 Proxy
    •中介者模式 Mediator
    •适配器模式 Adapter

  • 6.状态变化:
    •备忘录模式 Memento
    •状态模式 State

  • 7.数据结构:
    •组合模式 Composite
    •迭代器模式 Iterator
    •责任链模式 Chain of Resposibility

  • 8.行为变化:
    •命令模式 Command
    •访问者模式 Visitor

  • 9.领域问题:
    •解释器模式 Interpreter

猜你喜欢

转载自blog.csdn.net/qq_25467397/article/details/80259608