当前位置: 首页 > 后端技术 > PHP

DesignMode-07-DecoratorMode

时间:2023-03-29 15:13:29 PHP

DecoratorModeOverview当对象需要添加一些功能时,比如给表单组件添加验证功能,给咖啡添加配料,给窗口添加滚动条等。如果在这时使用继承时间,会产生很多子类,不好管理,而且当项目越来越大的时候,会出现类爆炸。使用装饰器模式以组合的形式构造对象,比使用继承更灵活、更简单,也更易于管理。实现这里为咖啡添加配料。有咖啡的素材,现在我们在做摩卡咖啡等。使用Beverage抽象类,coffee和ingredients分别继承Beverage类,实现里面的抽象方法Cost和GetDecription。将配料的构造方法传递给咖啡类,在配料的构造函数中通过组合配料和咖啡原料实现装饰器模式。每个配料(装饰器)都有一个(包)组件,在装饰器中保存对原材料的引用可以实现咖啡用配料包装(装饰)。总结分析装饰器模式采用了组合构造的方式,大大减少了类的数量,也打破了扩展函数必须使用继承的思维惯性。但是,装饰器模式会生成过多的小类,过度使用会使程序更加复杂。代码实现:装饰器模式(php/go)