GOF设计模式解析

C++ 专栏收录该内容
7 篇文章 0 订阅

设计模式之于面向对象系统的设计和开发的作用就有如数据结构之于面向过程开发的作用一般。

面向对象系统的分析和设计实际上追求的就是两点,一是高内聚,二是低耦合。这也是我们软件设计所准求的,因此无论是OO中的封装、继承、多台,还是我们的设计模式的原则和实例都是在为了这两个目标努力着、贡献着。

1.创建型模式

        1.1 Factory模式

                1.1.1模式结构图

                        

                1.1.2模式解析

                         Factory模式的应用不只是为了封装对象的创建,而是要把对象的创建放在子类中实现:Factory中只是提供了对象创建的接口,其实现在将放在Factory的子类ConcreteFactory中进行。

 

        1.2 AbstactFactory模式

                1.2.1模式结构图

                        

                1.2.1 模式解析

                         AbstractFactory模式要创建一组相关或者相互依赖的对象。

 

        1.3 Singleton模式

                1.2.1模式结构图

                       

                1.3.2 模式解析

                         Singleton模式通过维护一个static成员变量来记录这个唯一的对象实例,通过提供一个static的接口instance来获得这个唯一的实例,需要说明的是Singleton不可以被实例化。

 

        1.4 Builder模式

                 1.4.1 模式结构图

                         

                  1.4.4 模式解析

                           Builder模式:当要创建的对象很复杂的时候(通常是由很多其他的对象组合而成),我们要复杂对象的创建过程和这个对象的表示分离开来,这样做的好处就是通过一步步的进行复杂对象的构建,由于在每一步的构造过程中可以引入参数,使得经过相同的步骤创建最后得到的对象的展示不一样。

 

        1.5 Prototype模式

                1.5.1 模式结构图

                       

                1.5.2 模式解析

                         Prototype模式提供了一个通过已存在的对象进行新对象的创建的接口(Clone),Clone()实现和具体的实现语言相关,在C++中我们将通过拷贝构造函数实现之。

 

2.结构性模式

        2.1 Bridge模式

                2.1.1 模式结构图

                       

                2.1.2 模式解析

                        Bridge模式:系统被分为两个相互独立的部分,左边是抽象部分,右边是实现部分,这两个部分可以相互独立地进行修改。

 

        2.2 Adapter模式

                2.2.1 模式结构图(类适配器和对象适配器)

                       

                        

                2.2.2 Adapter模式解析

                        类模式的Adapter采用继承的方式复用Adaptee的接口,而在对象模式的Adapter中我们采用组合的方式实现Adaptee的复用。

 

        2.3 Decorator模式

                2.3.1 模式结构图

                       

                2.3.2 Decorator模式

                        Decorator模式給类增加职责的方法,不是通过继承实现的,而是通过组合。

 

         2.4 Composite模式

                2.3.1 模式结构图

                       

                 2.4.2 Composite模式解析

                        Composite模式:提供对于子节点(Leaf)的管理策略。

 

        2.5 Flyweight模式

                2.5.1 模式结构图

                       

                2.5.2 Flyweight模式解析

                        Flyweight模式:为共享对象提供一个存放的“仓库”()对象池。

 

        2.6 Facade模式

                2.6.1 模式结构图

                       

                2.6.2 Facade模式解析

                       

        2.7 Proxy模式

                2.7.1 模式结构图

                       

                2.7.2 Proxy模式解析

                       

3.行为模式

        3.1 Template模式

                3.1.1 模式结构图

                       

                3.1.2 Template模式解析

                        Template模式是采用继承的方式实现的,将逻辑(算法)框架放在抽象基类中,并定义好细节的接口,子类中实现细节。

 

        3.2 Strategy模式

                3.2.1 模式结构图

                       

                3.2.2 模式解析

                       

        3.3 State模式

                3.3.1 模式结构图

                       

                3.3.2 模式解析

                        State模式将状态逻辑和动作实现进行分离。

 

        3.4 Observer模式

                3.4.1 模式结构图

                       

                3.4.2 模式解析

                        Observer模式

        3.5 Memento模式

                3.5.1 模式结构图

                       

                3.5.2 模式解析

                        Memento模式

 

        3.6 Mddiator模式

                3.6.1 模式结构图

                      

                3.6.2 模式解析

 

        3.7 Command模式

                3.7.1 模式结构图

                       

                3.7.2 模式解析

 

        3.8 Visitor模式

                3.8.1 模式结构图

                       

                 3.8.2 模式解析

 

        3.9 Chain Of Responsibility模式

                3.9.1 模式结构图

                       

                3.9.2 模式解析

 

        3.10 Iterator模式

                3.10.1模式结构图

                       

                3.10.2 模式解析

 

        3.11 Interpreter模式

                3.11.1模式结构图

                         

                3.11.2 模式解析

 

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页

打赏

12304108

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值