设计模式-结构-Decorator(装饰)模式

梦想游戏人
目录:
软件架构

1.在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。

2.在已知的类添加功能,如果继承来实现 那么增加了系统的复杂性和继承深度

通过组合而不是继承 来达到目的

代码大全中有这样一个场景,一个功能很复杂 齐全的类,但是我只想要部分接口,和部分功能,那么可以通过装饰着模式 包装出一个新类

class Component
{
public:
	virtual void Operation() = 0;

};

class ConCreateComponent :public Component
{
public:
	virtual void Operation()override
	{

	}
};


class Decorator :public Component
{
public:
	virtual void Operation()override
	{

	}


};



class ConCreateDecorator :public Decorator
{
public:
	virtual void Operation()override
	{
		_component->Operation();
		this->AddedBehavior();
	}

	void AddedBehavior()
	{
		cout << __FUNCTION__ << endl;
	}

	ConCreateDecorator(Component*com)
	{
		this->_component = com;
	}
private:
	Component* _component;


};




int main(int argc, char *argv[])
{


	Decorator* dec = new ConCreateDecorator(new ConCreateComponent);
	dec->Operation();


	system("pause");
	return 0;
}
Scroll Up