这里是“思达巴克”咖啡店,店长又在使用Java研制新产品了……
研发的最终结果是店里只提供“意式浓缩” “卡布奇诺” “拿铁”“摩卡”“美式”这五种口味的基本咖啡。对于每种咖啡,顾客都可以随意搭配三种配料中的零到多种:奶泡、糖浆和可可粉。
但是,店长很快就发现了一个问题!
如果我们使用继承方式来提供所有口味的咖啡,那么借助排列组合公式,总共要创建的咖啡子类一共有50个。
倘若某一天,“思达巴克”在配料中又开始提供更多选择,那么类的个数就会比50要大得多……
从上图我们能看出,继承通常不是达到有弹性设计的最佳方式,那么如何用一种巧妙的方式来规避这种子类爆炸的继承呢?
那就使用Decorator模式吧~
Decorator模式能动态地将责任附加到对象上。为了扩展类的功能,Decorator模式提供了有别于继承的另一种选择。
使用Decorator模式(装饰者模式),给爱用继承的人一个全新的设计眼界。你将学会如何使用对象组合的方式,做到在运行时装饰类。
一旦你熟悉了装饰的技巧,你能在不修改任何底层代码的情况下,给你的对象赋予新的职责。
具体实现方式,下次相关后续会介绍哟~
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved