随笔分类 - 设计模式
摘要:抽象工厂 提供一个接口,让该接口负责创建一系列“相关或者相互依赖的对象”,无需指定它们具体的类。 class DBConnection { public: DBConnection(){ } virtual ~DBConnection(){ } virtual bool connectionStri
阅读全文
摘要:单例模式 保证一个类仅有一个实例,并提供一个该实例的全局访问点。 懒汉模式 class Singleton { public: static Singleton* getInstance(); private: static Singleton* instance_; private: Single
阅读全文
摘要:工厂模式 定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使得一个类的实例化延迟(目的:解耦,手段:虚函数)到子类。 class SplitterFactory { public: SplitterFactory(){ } virtual ~SplitterFact
阅读全文
摘要:面向对象设计原则 依赖倒置原则(DIP) 高层模块不应该依赖于低层模块,二者都应该依赖于抽象。 抽象不应该依赖于实现细节,实现细节应该依赖于抽象。 开放封闭原则(OCP) 对扩展开放,对更改封闭。 类模块应该是可扩展的,但是不可修改。 单一职责原则(SRP) 一个类应该仅有一个引起变化的原因。 变化
阅读全文
摘要:装饰模式 动态(组合)地给一个对象增加一些额外的职责。就增加功能而言,Decorator模式比生成子类(继承)更为灵活(消除重复代码&减少子类个数)。 class Stream { public: virtual char* read(int size) = 0; virtual void writ
阅读全文
摘要:桥接模式 将抽象部分(业务功能)与实现部分(平台实现)分离,使它们都可以独立地变化。 案例 某软件公司要开发一个跨平台图像浏览系统,要求该系统能够显示BMP、JPG、GIF、PNG等多种格式的文件,并且能够在Windows、Linux、UNIX等多个操作系统上运行。系统首先将各种格式的文件解析为像素
阅读全文
摘要:适配器模式 将一个类的接口转换成客户希望的另一个接口,Adapter模式使原本由于接口不兼容而不能工作的那些类可以一起工作。 class Target { public: virtual void process() = 0; } class Adaptee { public: virtual vo
阅读全文
摘要:职责链模式 使多个对象都有机会处理请求,从而避免请求的发送和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理为止。 enum ReqestType{ HANDLE1, HANDLE2, HANDLE3 }; class Reqest { public: Reqes
阅读全文
摘要:模板模式 阶段1 //程序库开发人员 class Library { public: void step1(); void step3(); void step5(); } //应用程序开发人员 class Application { public: bool step2(); bool step4
阅读全文
摘要:策略模式 定义一系列算法,把它们一个个封装起来,并且使它们可互相替换(变化)。该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展,子类化)。 阶段一 enum TaxBase{ CN_TAX, US_TAX, DE_TAX, }; class SalesOrder{ public: doub
阅读全文

浙公网安备 33010602011771号