访问者模式。
场景:对于一个产品,有相对固定的子产品,子产品对于不同的情况下,有类似的处理的时候,用访问者模式相对好些。举个例子一个电脑,里面有cpu,keyboard,Indicator部件,当不同的人买的话,价格可能不一样,个人买的话cpu打9折,keyboard打95折,Indicator打9折; 当企业买的时候,cpu打7折,keyboard打8折,Indecator打6折。
类图:
在java设计中,有句话叫封装变化,就是对变化的部分进行封装起来。此例中,变化的对象就是不同的访问者,变化的内容就是折扣不一样。
我们把对象封装出来不同的访问者,具体折扣不一样,让具体访问者进行自己实现。跟策略模式有点像。