程序设计模式
1.依赖注入
在编译期依赖接口而不依赖具体的类或对象,在运行期接收传入的实现接口方法的对象,实现控制反转,即自身不持有而接受传入别人持有的对象。
从某种意义上讲,这就是一种“面向接口编程”。尽可能把耦合性的东西都做成接口。
2.工厂模式
工厂模式的本质就是对获取对象的过程进行抽象化
2.1 简单工厂模式
提供一个工厂类:负责构建所有实例的内部逻辑
提供一个抽象产品类
提供一个具体产品类
2.2抽象工厂模式
抽象工厂,具体工厂
抽象产品,抽象产品族,具体产品
#include<iostream>
using namespace std;
//抽象产品
class product
{
public:
virtual void show() const = 0 ;
};
//抽象产品族
class Mouse:public product{};
class KeyBoard:public product{};
//抽象产品
class LogiKeyboard :public KeyBoard
{
virtual void show()const override
{
cout << "LogiKeyboared" << endl;
}
};
class RazerKeyboard :public KeyBoard
{
virtual void show() const override
{
cout << "RazerBoard" << endl;
}
};
class LogiMouse :public Mouse
{
virtual void show()const override
{
cout << "LogiMouse" << endl;
}
};
class RazerMouse :public Mouse
{
virtual void show()const override
{
cout << "RazerMouse" << endl;
}
};
//抽象工厂
class Factory
{
public:
virtual Mouse* creatMouse() = 0;
virtual KeyBoard* creatKeyboard() = 0;
};
//具体工厂
class LogiFactory :public Factory
{
Mouse* creatMouse()
{
return new LogiMouse;
}
KeyBoard* creatKeyboard()
{
return new LogiKeyboard;
}
};
int main()
{
Factory* myFactory = new LogiFactory;
KeyBoard* myKey = myFactory->creatKeyboard();
Mouse* myMouse = myFactory->creatMouse();
myKey->show();
myMouse->show();
return 0;
}
2.3工厂方法模式
抽象产品,具体产品
抽象工厂,具体工厂
3.适配器模式
对象适配器
类适配器
4.代理模式
5.迭代器模式
6.观察者模式
当一个对象状态发生变化时,会自动通知其他关联对象,自动刷新状态
观察者,被观察者
7.装饰者模式
抽象组件类,具体组件类(被修饰者)
抽象装饰类,具体装饰类
有点像抽象类,但更容易的组合在一起
8. 单例模式
9. 责任链模式
将某个事件进行一系列传递,直到被处理