首页 > 编程语言 >23 种设计模式C++实现

23 种设计模式C++实现

时间:2022-11-07 19:32:46浏览次数:31  
标签:23 对象 创建 接口 模式 一个 C++ 设计模式


设计模式的分类

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

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

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

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

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

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

一、创建型模式

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

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

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

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

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

二、结构型模式

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

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

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

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

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

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

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

三、行为型模式

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

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

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

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

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

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

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

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

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

10、​​中介者模式​​、提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。

11、​​解释器模式​​。如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题

 

标签:23,对象,创建,接口,模式,一个,C++,设计模式
From: https://blog.51cto.com/u_11320078/5831083

相关文章

  • 设计模式(十八)桥接模式 C++
    桥接模式即将抽象部分与它的实现部分分离开来,使他们都可以独立变化。桥接模式将继承关系转化成关联关系,它降低了类与类之间的耦合度,减少了系统中类的数量,也减少了代码量。桥......
  • visual c++6.0对浮点数处理器的初始化
       <C++反汇编与逆向分析>的作者在书中P21页列写了一段代码:intmain(){intnInt0;scanf("%f",&nInt);}并简短的提到,运行上面这段程序并输入小数,将会导致程序崩......
  • JAVA 责任链设计模式
    这次介绍责任链模式,采用最普遍的请假例子来编码实现。先给列出个模拟的需求,一个人请假,调用一个接口,传入的参数是他请假的天数。然后,请假的天数---->如果小于2天,由直属领导......
  • C++ 悬垂指针
    /***********************************************************************//一、迷途指针(悬垂指针)在计算机编程领域中,迷途指针与野指针指的是不指向任何合法的对象的......
  • C++入门知识点
        今天我为大家带来的是有关C++入门知识点,总共分为5个小知识点,分别是:命名空间,缺省参数,函数重载,引用和auto关键字(C++11)。在这其中,我们还会穿插将一些知识点,希望大......
  • 创建型设计模式-原型模式(深拷贝,浅拷贝)
    Person类:publicclassPerson{publicstringName{get;set;}publicintAge{get;set;}publicAddressAddress{get;set;......
  • C/C++算法从菜鸟到达人
    "IT有得聊”是机械工业出版社旗下IT专业资讯和服务平台,致力于帮助读者在广义的IT领域里,掌握更专业、实用的知识与技能,快速提升职场竞争力。今天为您推荐一本精品图书--C/C++......
  • 创建型设计模式-单例模式(为什么要双重加锁判断)
    代码publicclassSingleObject{privatestaticSingleObjectinstance;privatestaticobjectlockobj=newobject();privateSingleObject(){}publicstatic......
  • 设计模式学习(二):单例模式
    设计模式学习(二):单例模式作者:Grey原文地址:博客园:设计模式学习(二):单例模式CSDN:设计模式学习(二):单例模式单例模式单例模式是创建型模式。单例的定义:“一个类只允许创建......
  • 2023 年企业如何按下数字化转型加速键?
    2022也接近尾声,即将迎来2023年,疫情或将持续而无法终结,市场环境或许有点捉摸不透,企业数字化转型依旧迫在眉睫,但依旧得慎重再慎重,企业实现数字化转型在理解什么是数字化转型......