设计模式
设计模式原则
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; //直接初始化