常用设计模式

一、单例模式
是一种对象创建模型,使用单例模式可以保证为一个类只生成唯一的一个实例对象。在整个程序空间中,该类只存在一个实例对象。

单例模式的设计步骤:
1、构造函数私有化
2、提供一个全局的静态方法
3、在类定义一个静态指针,指向本类的静态变量指针

单例的实现分为:懒汉式和饿汉式
主要区别在于:对象的创建时机不同。懒汉式:第一次使用对象时创建对象,饿汉式:程序启动时创建对象。

由于懒汉式在每次获取对象指针的时候都要进行判断,多线程下可能导致对象被多次创建。我们需要使用一些线程同步机制来控制对象的创建,如互斥锁。

 if (m_instance == nullptr)
        {
            std::unique_lock<std::mutex> lock(mutex);  // 自动锁对象
            if (m_instance == nullptr)
                m_instance = new Singleton;
        }

        handle_count++;
        return m_instance;
    }

二、简单工厂模型
属于创建型模型,又称为静态工厂方法模式。是一种由一个工厂对象决定创建出哪一种产品类实例,是工厂模式家族中最简单实用的模式,可以理解为不同工厂模式的一个特殊实现。

三、抽象工厂模式
抽象工厂模式是所有形态的工厂模式中最为抽象和最其一般性的。抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象。

三种工厂模式的区别:
简单工厂 : 用来生产同一等级结构中的任意产品。(对于增加新的产品,无能为力)

工厂方法 :用来生产同一等级结构中的固定产品。(支持增加任意产品)

抽象工厂 :用来生产不同产品族的全部产品。(对于增加新的产品,无能为力;支持增加产品族)

四、建造者模式

Builder模式也叫建造者模式或者生成器模式,是由GoF提出的23种设计模式中的一种。Builder模式是一种对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。
对象的创建:Builder模式是为对象的创建而设计的模式- 创建的是一个复合对象:被创建的对象为一个具有复合属性的复合对象- 关注对象创建的各部分的创建过程:不同的工厂(这里指builder生成器)对产品属性有不同的创建方法

模式中包含的角色及其职责:
1)Builder:为创建产品各个部分,统一抽象接口。
2) ConcreteBuilder:具体的创建产品的各个部分,部分A, 部分B,部分C。
3) Director:构造一个使用Builder接口的对象。
4) Product:表示被构造的复杂对象。

ConcreteBuilder创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,包括将这些部件装配成最终产品的接口。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值