在日常开发工作中,适当的使用一些设计模式,可以让代码扩展性更强,能更好地拥抱变化,让代码更加优雅。本文主要介绍设计模式中的装饰模式,并附上测试示例 Demo 供大家参考。
定义
装饰模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。
个人理解
装饰模式可以在运行时,在不修改原有代码的前提下,动态地为对象添加或移除指定的业务逻辑,比起继承,采用装饰模式让代码更据扩展性,更为灵活,避免了继承导致的代码耦合。
装饰模式的设计理念是:对修改关闭,对扩展开放;面对接口编程。
示例介绍
个人有时间会自己煮汤(这不是重点哈,只是刚好有这么一个场景适合采用装饰模式,因此也就拿来做例子了),在煮汤的过程中,我们需要添加不同的食材,就拿凉瓜排骨汤来说吧,需要的食材有排骨、凉瓜、大豆、食用盐、水等,当然根据不同人的不同喜好,可以添加其他的食材。以上说到的这些食材都是制作“凉瓜排骨汤”所必须的,没有它们的点缀,汤喝起来也就不是那个味道了,这里的点缀我们可以理解为装饰,是食材装饰了“凉瓜排骨汤”,也就是说食材是装饰者,而“凉瓜排骨汤”是被装饰的对象。UML 图如下: