天天看点

23 种设计模式C++实现

设计模式的分类

总体来说设计模式分为三大类:

创建型模式,共五种:​​单例模式​​、​​原型模式​​、​​工厂方法模式​​、​​抽象工厂模式​​、​​建造者模式​​。

结构型模式,共七种:​​适配器模式​​、​​装饰器模式​​、​​代理模式​​、​​外观模式​​、​​桥接模式​​、​​组合模式​​、​​享元模式​​。

行为型模式,共十一种:​​策略模式​​、​​模板方法模式​​、​​观察者模式​​、​​迭代器模式​​、​​责任链模式​​、​​命令模式​​、​​备忘录模式​​、​​状态模式​​、​​访问者模式​​、​​中介者模式​​、​​解释器模式​​。

其实还有两类:并发型模式和线程池模式。

下面对23种设计模式做一个概括性的介绍

一、创建型模式

1、​​单例模式​​:这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象(单例类只能有一个实例)

2、​​原型模式​​:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。

3、​​工厂方法模式​​:核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节

4、​​抽象工厂模式​​:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类

5、​​建造者模式​​:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示

二、结构型模式

1、​​适配器模式​​、将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

2、​​装饰器模式​​、动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。好处就是把核心功能和装饰功能区分开来了

3、​​代理模式​​、:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的访问。通俗的来讲代理模式就是我们生活中常见的中间人。

4、​​外观模式​​、用一句话说明就是分层设计,为复杂的模块套个壳~,官方说法是为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用

5、​​桥接模式​​、策略模式定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。该模式使得算法可独立于使用它的客户而变化

6、​​组合模式​​、又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。

7、​​享元模式​​。如果一个系统中存在多个相同的对象,那么只需共享一份对象的拷贝,而不必为每一次使用都创建新的对象。

三、行为型模式

1、​​策略模式​​、策略模式定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。该模式使得算法可独立于使用它的客户而变化。

2、​​模板方法模式​​、一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行

3、​​观察者模式​​、当一个对象被修改时,则会自动通知它的依赖对象

4、​​迭代器模式​​、提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示

5、​​责任链模式​​、使得很多对象都有机会处理请求,从而避免请求发送者和接收者之间的耦合关系。将这些对象形成 一条链,沿着这条链处理请求,之道有一个对象处理为止

6、​​命令模式​​、把请求一个操作的对象与知道怎么执行一个操作的对象分隔开,从而使新的命令类可以很容易被加入到系统当中

7、​​备忘录模式​​、保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式

8、​​状态模式​​、状态模式允许一个对象在其内部状态改变的时候改变行为

9、​​访问者模式​​、将数据结构和算法之间的解耦解开

继续阅读