设计模式
1.单例模式
通过单例模式创建的类在当前进程中有且只有一个实例
class A{
/*提供一个接口*/
public:
static A *instance(){
if(m_instance==null){
m_instance=new A();
}
return m_instance;
}
/*将类的构造方法声明为private,在类外实例化对象*/
private:
A();
A(const A &);
~A();
A & operator =(const A &);
private:
static A* m_instance;
};
2.简单工程模式
属于类创建模式,根据参数不同返回不同类的实例。
添加新功能会修改源代码,不符合开闭原则
class AbstractFruit{
public:
virtual void ShowName()=0;
};
class Apple:public AbstractFruit{
public:
virtual void ShowName(){
cout<<"Apple"<<endl;
}
};
class Orange:public AbstractFruit{
public:
virtual void ShowName(){
cout<<"Orange"<<endl;
}
};
// 简单工厂模式
class FruitFactory{
public:
static AbstractFruit* CreateFruit(string fruitName){
if (fruitName == "Apple") {
return new Apple();
} else if (fruitName == "Orange") {
return new Orange();
}
return nullptr;
}
};
//
void test(){
AbstractFruit* fruit = FruitFactory::CreateFruit("Apple");
fruit->ShowName();
}
3.工厂模式
将工厂抽象出来(定义一个用于创建对象的接口)
4.抽象工厂模式
5.装饰器模式
动态地给一个对象添加一些额外的功能,就增加功能来说,装饰模式比生成子类更加灵活
6.适配器模式
将一个类的接口换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法 在一起工作的两个类能够在一起工作。
7.观察者模式
定义对象间的一种一对多的依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆 得到通知并被自动更新
文档信息
- 本文作者:wangwang
- 本文链接:http://anshichifan.xyz/2024/10/12/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)