![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
m0_60249132
这个作者很懒,什么都没留下…
展开
-
设计模式-命令模式
命令模式将每个行为(命令)封装成类,#include#includeusing namespace std;将行为封装的接口虚类class Command{public:virtual void execute()=0;virtual ~Command(){};};具体的两种执行命令的行为类class ConcreteCommand1:public Command{public:virtual void execute(){cout<<“command1 is run原创 2021-09-26 19:07:31 · 56 阅读 · 0 评论 -
设计模式-观察者模式
我们可以使用观察者模式来使一个消息通知给多个对象#include#includeusing namespace std;建立观察者公共接口class Observe{public:virtual void updata()=0;virtual ~Observe(){}};建立具体的观察者接口,并且将需要的通知操作重写class ConcreteObserve1:public Observe{public:void print(){cout<<“wrong”;}void原创 2021-09-26 19:03:52 · 40 阅读 · 0 评论 -
设计模式-适配器模式
老接口class IAdaptee{ public: virtual void foo(int data)=0; virtual int bar()=0;}; class oldclass:public IAdaptee{ public: virtual void foo(int data){ } virtual int bar(){ }};新接口class ITarget{ public: virtual void process()=0;原创 2021-09-04 22:01:45 · 39 阅读 · 0 评论 -
设计模式-代理模式
在某些面向对象系统中,有些对象由于对象创建开销很大、某些操作需要安全控制或需要进程外的访问,直接访问会给系统带来麻烦。class ISubject{ public: virtual void process();};class RealSubject:public ISubject{ public: virtual void process(){ //...... }};class ClientApp{ ISubject* subject; public: Clien原创 2021-09-04 21:10:22 · 47 阅读 · 0 评论 -
设计模式-策略模式
//此模式实现计算各个国家的税//定义一个基类,并将方法定义成虚函数,如果需要添加其他国家税收,只需要让工厂模式支持可分配指针,添加一个子类即可,提高了复用性class TaxStrategy{public: virtual double Calculate(const string &text)=0; virtual ~TaxStrategy();};class CNtax:public TaxStrategy{public: virtual double Calculate(c原创 2021-09-01 16:55:56 · 45 阅读 · 0 评论 -
设计模式-单例模式
//单例模式:存在一种特殊的类,保证在系统中只存在一个实例,以此确保程序的逻辑正确性、良好的效率。#include <iostream>using namespace std;class Singleton{private: Singleton(){}//定义构造函数在private中,防止生成合成的默认构造函数 Singleton(const Singleton&);//定义拷贝构造函数在private中,目的与上述一致,防止类外使用合成的拷贝函数使实例化public:原创 2021-09-01 11:17:32 · 60 阅读 · 0 评论 -
设计模式-工厂模式
工厂模式通过对象创建绕开new,避免对象创建时的紧耦合。此类使用一个文件分割器class mainform{ ....public: ..... filesplitter* splitter=new filesplitter();//原方法需要在这new具体的对象 splitter->split();};class filesplitter{public:void split(){ ....}};若我们需要增加图片分割器,文本分割器等需要在new时依赖具体的类,可使用工厂原创 2021-09-02 11:05:45 · 98 阅读 · 0 评论