设计模式

2024/10/12 c++ 共 1026 字,约 3 分钟
闷骚的程序员

设计模式

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.观察者模式

定义对象间的一种一对多的依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆 得到通知并被自动更新

文档信息

Search

    Table of Contents