装饰模式

ぐ巨炮叔叔 提交于 2019-12-23 20:58:02

装饰模式

装饰模式,就是可以动态的给一个对象添加一些额外的职责,就增加新功能来说,装饰模式比生成子类的方式更加灵活。其实可以把装饰模式理解为给一个人穿衣服的过程,给人穿衣服,所以首先得需要一个人,其次就得需要衣服了,对应到装饰模式当中,就是首先得需要一个被装饰得主体,接着就是需要装饰了。有可能并不是一个人,所以可以选择性的抽出一个人的接口对象,而衣服不可能是只穿一件衣服,所以就需要一个服装基类,然后就是实现各式各样具体的服装了(如:T恤,裤子,夹克……)接下来就是装饰的过程,首先需要实例化出一个人的对象,然后需要将这个对象设置到服装基类中作为装饰主题,接着给人穿什么衣服,就依个人喜好而定了_。代码实现如下(参考《大话设计模式》):
在这里插入图片描述
装饰过程:
在这里插入图片描述
这里,开始觉得用生成子类的方法也可以实现该功能,增加一个功能,在这里就是具体增加一个服装,就多一个服装基类的子类,但是如果这样做,就需要实例化完所有对象之后,一个一个运行show方法,这样本该在内部组装好西,最后只需show一次即可的东西,最后确实在外部组装完成,这样感觉不太好,就像穿衣服一样,不管你今天穿什么衣服,都应该自己起床穿好,最后其他人看到的只是你穿好衣服的样子,而不是你拿着衣服,当着别人面一件一件穿好。
其实,装饰模式通俗来讲,就是有一个主题,然后一层一层往这个主题上“套”东西。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!