项目场景:
近期学习了一些常见的设计模式,今天讲解C++ 装饰模式,比较有意思的是,装饰类继承于实物的基类,因此可以被装饰类再次装饰。
装饰模式中的类关系说明
基类Iobject
继承Iobject,生成实物类 ObjectA
继承Iobject,生成装饰类 DecoratedObject
伪代码:
class Iobject
{
public:
virtual void pri()=0;
}
class ObjectA :public Iobject
{
public:
void pri(){} override;
}
class DecoratedObject :public Iobject
{
private:
doit(){cout<<"decerater"}
public:
DecoratedObject (Iobject* pObject)
void pri(){ pObject->pri(); doit(); } override;
}
}
思考:
C++代理模式,也是继承基类+持有基类,只不过代理模式里,例如代理服务器的,其作用不是和装饰类一样,增强某种功能,而是让用户单纯以为是直接对接的服务器,感觉不到代理类的存在,增加了一些本地功能,假装和服务器交流,实际上并没有。
这一篇文章写的很好,我分享一下,C++ 设计模式 —— 9.装饰模式