电信产品有宽带、号码、话费、流量等很多种,很显然,销售每种产品的业务逻辑是不一样的,比如销售宽带产品时需记录客户的家庭地址、预约上门安装时间;销售话费只需记录客户充值的手机号码等等。且业务逻辑经常会发生变化(经常进行促销活动),这种情况非常适合用策略模式来设计,我就是用策略模式来处理这类问题的。请看图:
ProductService是一个抽象类,代表所有可销售产品的Service,它其中包括一个SellBehavior成员,SellBehavior接口封装产品销售的业务逻辑,例如它的一个实现类SellBroadband是宽带产品销售的业务逻辑。
BroadbandService继承ProductService,是宽带产品的Service,在创建时给sellBehavior成员装配SellBroadband类。
可以看出宽带产品销售的业务逻辑封装在SellBroadband的sell方法里,而其它产品,例如话费销售的业务逻辑封装在SellTelephoneFare的sell方法里。这样使得不同产品的销售方法各自独立不互相影响,业务逻辑清晰易于改变,当需要增加新的产品时,只需增加一个SellBehavior接口的实现类,对已有的类不会有任何影响。
原文:http://blog.csdn.net/u013668719/article/details/51334301