设计模式概论

本文探讨了开闭原则、迪米特原则、合成复用原则和依赖倒转原则等设计模式核心,以及简单工厂、工厂方法和抽象工厂模式的实战应用,还包括单例模式的两种实现方式。理解并掌握这些原则有助于编写灵活且易于维护的代码。
摘要由CSDN通过智能技术生成

设计模式

设计模式原则

1、开闭原则

在开闭原则中,对增加功能开放,对修改代码关闭。
因此会设计许多的类,进行各自的功能实现,以防止修改这些功能时对之前的稳定代码产生影响。

2、迪米特原则

函数使用者对于类的了解越少越好,最好是提供一个中间类,能够管理所有的其他类,只需要调用某个接口即可实现问题,降低出现问题概率。

3、合成复用原则

继承:子类继承父类,耦合强,父类变动对子类影响较大。
组合:作为对象出现在另一个类中,变动时影响不大。
继承和组合一起出现时,优先使用组合。

4、依赖倒转原则

打破原有一层依赖一层的设计原则,底层变动容易影响上层的代码实现。
更多的使用传入抽象对象指针,通过多态来实现不同的功能。

简单工厂模式

简单工厂模式就是将各种类的创建交给一个工厂去进行,需要时直接调用即可,不需要自己再进行各种复杂的对象创建和参数填写等工作。
但是会导致一个工厂任务过重,违背了一个类只做一件事的原则。
在这里插入图片描述

工厂方法模式

每个类对应一个制造他它的具体工厂,都继承自同一个抽象类,通过客户端的制造需求不同,多态实现抽样工厂指针指向子类的对象,从而调用生产的函数,得到具体类的指针。
在这里插入图片描述
在这里插入图片描述
客户端不需要知道所需要的类,抽象工厂通过子类工厂创建对象。

抽象工厂模式

针对产品族符合开闭原则,针对产品结构不符合开闭原则。
在这里插入图片描述

单例模式

只能有一个对象,所有调用都是通过static 的静态对象进行调用,而不是直接创造对象。

//懒汉式
class single_lazy{
private:
    single_lazy(){}
public:
    static single_lazy* getinstance(){
        if(leton == nullptr){
            return new single_lazy;
        }
        return leton;
    }
private:
    static single_lazy * leton;
};
single_lazy * single_lazy::leton = nullptr;  //初始化

//饿汉式
class single_hungry{
private:
    single_hungry(){}
public:
    static single_hungry* getinstance(){
        if(leton == nullptr){
            return new single_hungry;
        }
        return leton;
    }
private:
    static single_hungry * leton;
};
single_hungry * single_hungry::leton = new single_hungry;  //直接初始化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值