cpp装饰器模式

Posted _WILLPOWER_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cpp装饰器模式相关的知识,希望对你有一定的参考价值。

装饰器模式(结构型模式):

在不改变现有对象结构的情况下,向对象添加新的功能,同时不改变其结构

重点在于动态的增加删除功能,装饰类和被装饰类独立,不会耦合。

返回的对象已经不是原来的对象了,但是调用方式还是不会变

#include <bits/stdc++.h>

using namespace std;

class Person

public:
	virtual void action() = 0;
;

class Man : public Person

public:
	void action()
	
		cout << "打领带" << endl;
	
;

class Woman : public Person

public:
	void action()
	
		cout << "化妆" << endl;
	
;

class Dec1 : public Person

public:
	Dec1(Person* p1) : p(p1)
	
	
	void action()
	
		p->action();
		cout << "上班" << endl;
	
	Person* p;
;

class Dec2 : public Person

public:
	Dec2(Person* p1) : p(p1)
	
	
	void action()
	
		p->action();
		cout << "下班" << endl;
	
	Person* p;
;

int main()

	Person* man = new Man();
	Person* woman = new Woman();

	man = new Dec1(man);
	man = new Dec2(man);
	woman = new Dec1(woman);

	man->action();
	woman->action();
	return 0;


输出

打领带
上班
下班
化妆
上班

C++装饰器模式的实现

以上是关于cpp装饰器模式的主要内容,如果未能解决你的问题,请参考以下文章

cpp装饰器模式

设计模式—— 十七:装饰器模式

Python 装饰器和装饰器模式有啥区别?

设计模式之-装饰器模式

《设计模式》之装饰器模式

装饰器模式