举个栗子(以书中”星巴慈咖啡”为例)
其实日常我们经常会去一些饮品店买饮料,咖啡等,有没有想过这个订单系统是如何实现的呢?...项目背景: 店里有多种饮料(咖啡,茶等),还有多种调料(奶,糖,椰果,珍珠等),比较暴躁的方法当然是遍历一下所有的,,比如新建”双份奶一糖0椰果2珍珠奶茶”等等好多类,然后根据用户的需求下订单,但是这也太蠢了...首先,将咖啡,茶等饮料定义为被装饰者,奶,糖,椰果,珍珠等定义为装饰者,当用户下单时,用户购买了一个”被装饰者”以及若干个“装饰者”,我们只需要将奶,糖,椰果,珍珠等东西装饰在被用户购买的这个被装饰者上即可...我的理解是,对咖啡来说,名字及价格直接返回自身的名字及价格即可,与Component定义相同,而对于装饰者Decorator来说,需要再这个类中,重写返回名字及价格的方法,在返回名字时,将他所持有的饮料实例的名字也进行返回...,饮料种类动辄几十种,粗暴方法肯定是解决不了的.