C++ 装饰者模式解析

装饰者模式指的是动态的将责任附加到对象上,想要扩展其功能,装饰者提供有别于继承的另一种选择。(参考《Head First 设计模式》)

个人理解:装饰者就是一种类包类 就是在构造函数里面,添加类作为参数。

装饰者模式原则

  • 封装变化
  • 多用组合,少用继承
  • 针对接口编程,不针对实质编程
  • 为交互对象的松耦合设计而努力
  • 对扩展开放,对修改关闭

装饰者模式实例

  • 例如男生和女生可以被认为是被装饰者,洗澡和吃饭可以理解为装饰行为, 就是装饰者模式,在我看来最大的好处 就是行为与行为者可以分开,毕竟好扩展。 就是可以今天是男生洗澡,女生吃饭, 也可以是女生洗澡 男生吃饭。 接下来来实现这一行为

首先是基准类的头文件,男生女生都是人 所以以人作为基准类的声明如下,定义了两个纯虚函数,一个是人的类别,一个是人的行为。

//所有的基类 人
class People
{
public:
	virtual void personType()= 0; //人的类型
	virtual void personAction() = 0; //人的活动
};

接下来是被装饰者男生女生各自的类的行为和活动

头文件:

//被装饰者 :男生
class Boy:public People
{
public:
	//继承人的两个方法
	void personType();
	void personAction();
};

//被装饰者:女生
class Girl:public People
{
public:
	void personType();
	void personAction();
};

各自类的实现如下:

//实现相关类
//男生类
void Boy::personType()
{
	cout << "Boy:" << endl;
}

void Boy::personAction()
{
	cout << "Boy要做的事情是" << endl;
}

//女生类
void Girl::personType()
{
	cout
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值