设计模式:装饰者模式
装饰者模式 动态地将责任附加到对象上。若要拓展功能,装饰者提供了比继承更有弹性的替代方案。 1. 角色 抽象构件(Component)角色:要包装的原始对象,是一个抽象类或接口。 具体构件(ConcreteComponent)角色:最终要装饰的实际对象,是Component的实现类。 装饰(Decorator)角色:是一个抽象类,继承自Component,同时持有一个对Component实例对象的引用。 具体装饰(ConcreteComponent)角色:具体的装饰者对象,是Decorator的实现类,负责给ConcreteComponent附加责任。 2. Demo背景 一个奶茶店每款奶茶可以自己选添加一些辅料如燕麦,布丁,红豆,珍珠等等。添加辅料不同可能价格也不同,又或者是我们全都要,同时添加多种辅料,这样我们设计对象时就遇到了困难,难道要排列组合去创建子类吗?这样做显然是不好的,类数量爆炸,设计死板。在这时候我们就可以引用装饰者模式,用组合的方式代替继承。 3. 代码实现 抽象构件类(Component):MilkyTea public abstract class MilkyTea(奶茶) { public string description; public abstract double GetFee(); //与java不一样