设计模式(复用性)

设计模式(复用性)

面向对象设计原则

依赖倒置原则(DIP)、开放封闭原则(OCP)、单一职责原则(SRP)、Liskov替换原则

接口合理原则(ISP)、优先使用对象组合,而不是类继承、封装变化点、针对接口而不是针对实现编程

template method

早绑定<–晚绑定

基类析构函数要是虚函数

策略模式

strategy可以使得类型在运行时方便的根据需要在各个算法之间进行切换(替换if else)

observe观察者模式

装饰模式

运行时装配 利用多态继承

桥模式

父类* a = 子类* b

a->父类的虚函数 即 子类的实现

工厂方法

手段是虚函数

避开依赖具体类

父类* a = 子类* b

a->父类的虚函数 即 子类的实现

class 父类factory{
public:
    virtual 父类* Createfactory() = 0;
};
class 子类factor: public 父类factory{
public:
    virtual 父类* Createfactory(){
        return new 子类();
    }
};
父类* a;
Mainform(父类* a){
    this->a = a
}
子类* b = 父类->Createfactory();

抽象工厂

一系列相互依赖的对象

原型模式

通过克隆自己来创建对象

构建器

单件模式

singleton

class Singleton{
private:
	Singleton();
	Singleton(const Singleton& other);
public:
	static Singleton* m_instance;
	static Singleton* getInstance();
    static void createInstance();
};

Singleton* Singleton::m_instance = NULL;

Singleton::createInstance(){
    m_instance = New Singleton();
    static CGarhuishou c1; //进行析构
}

//双检查锁 防止高并发多线程 但是会reorder 需要volatile
Singleton* Singleton::getInstance(){
    if(m_instance == NULL){
        unique_lock<mutex> mymutex(resourse_mutex);
        if(m_instance == NULL){
            createInstance();
        }
    }
    return m_instance;
}

class CGarhuishou{
public:
    ~CGarhuishou(){
        if(Singleton::m_instance){
            delete Singleton::m_instance;
            Singleton::m_instance  = NULL;
        }
    }
}

享元模式 flyweight

采用共享的对象,具体实现要解决只读问题,适用于多个对象

门面模式 facade

接口隔离模式

代理模式 proxy

代理类和实际类接口是一致的,导致让人觉得是使用实际类

适配器 adapt

父类1ITA 父类2IAD

子类1OLD:父类2

子类2Ade:父类1{父类2,构造函数(父类2){}} (对象有灵活性)

类适配器采用多继承(定死类没有灵活性)很少用

希望复用一些现存类,但是接口又和复用环境要求不一致的情况

中介者 mediator

多个对象相互关联 mediator 解耦系统内的关联关系

state状态模式

备忘录模式

在不破坏对象的封装性的前提下 捕捉 对象的状态

组合模式composite

树结构 以表示整体-部分层次结构

迭代器iterator

在不暴露内部结构的同时,让外部客户代码透明地访问其中包含的元素

(面向对象)虚函数 运行时多态 泛型 编译型多态

职责链chain of resposibility

按链传播职责

命令模式 commend

将请求封装成对象

现在都用泛型编程,函数对象

访问器 visitor

double detach 双重分发

解析器 interpreter

总结

管理变化,提高复用

分解 vs 抽象
八大原则

class A{
	B* pb;//指针指向一个松耦合对象,实现多态
}

分开稳定点和变化点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值