0%

设计模式之原则

单一职责原则告诉我们实现类要职责单一;
里氏替换原则告诉我们不要破坏继承体系;
依赖倒置原则告诉我们要面向接口编程;
接口隔离原则告诉我们在设计接口的时候要精简单一;
迪米特法则告诉我们要降低耦合;
而开闭原则是总纲,他告诉我们要对扩展开放,对修改关闭。

设计模式之单一职责原则

一个类只负责一项职责

设计模式之里氏替换原则

子类可以扩展父类的功能,不能改变父类原有的功能,子类可以替换父类,方法或者行为也没有改变
  • 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法
  • 子类中可以有自己的特定方法

设计模式之依赖倒置原则

高层模块不应该依赖底层模块,二者都应该依赖其抽象接口
抽象不应该依赖细节,细节应该依赖抽象
依赖倒置原则的核心思想是面向接口编程,降低耦合度
  • 底层模块都应该提供抽象类或者接口
阅读全文 »

单例模式

  • 构造函数的调用 析构函数的调用,防止内存泄漏
  • 多线程安全
  • 单例模式防止外部调用构造函数创建对象 构造函数和析构函数私有化防止外部调用

  • 宏实现

  • 模板实现

懒汉式

调用时创建单例对象
延迟加载
比如加载配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
template<class T>
class Singleton{
private:
static T* m_instance;
public:
static T* getInstance(){
if(m_instance == nullptr){
m_instance = new T();
}
return m_instance;
}
};

template<typename T>
T* Singleton<T>::m_instance=nullptr;

饿汉式

应用程序启动时创建单例对象

1
2
3
4
5
6
7
8
9
10
11
template<typename T>
class Singleton{
private:
static T m_instance;
public:
static T* getInstance(){
return &m_instance;
}
};
template<typename T>
T Singleton<T>::m_instance;

阅读全文 »