现在的位置: 首页 > 综合 > 正文

设计模式1

2018年04月17日 ⁄ 综合 ⁄ 共 897字 ⁄ 字号 评论关闭

2008-0327:

今天学习了三个模式,突然想到以前一个mmkfc吃汉堡的例子,蛮有意思。

 

简单工厂模式:

Mmkfc对服务员说,我想吃汉堡,服务员把汉堡这个需求告诉厨师,厨师做好后给服务员,服务员把汉堡给mm

另一日,
mm
又到kfc说我要吃薯条,同样服务员把薯条这个需求告诉厨师,厨师做好后给服务员,服务员把薯条给mm.
mm
狂开心。

这个例子中:mm是客户,服务员是简单工厂,汉堡和薯条是产品。Mm只提她要求的产品,而不关心这些产品是怎么做的。业务和实现分开,代码重用。假如,那一天,
mm
又换口味了,她只需要对服务员说我想吃蒸玉米就能从服务员那里拿到可口的食品。

 

抽象工厂模式:

一日,mm口馋,想吃汉堡。没办法,只有去了。
Kfc
离我们家近,所以这次去kfc去吃。到了kfc, 我们要了香辣鸡腿堡。Mm吃得很开心。准备下次换到麦当劳吃香辣鸡腿堡。可过了几天,mm不想吃汉堡了,她想吃川菜。没法,去不了kfc了,只能换一家川菜馆了。

这个例子中:吃汉堡是抽象工厂,到麦当劳和肯德基去吃是抽象工厂的两个具体实现。香辣鸡腿堡是产品。
Mm
是客户。Mm每次指示我要吃汉堡,在那吃不关心,只要吃得是汉堡。我又很多选择,可以去麦当劳,Subway.代码得到重用。但mm提出新的需求,肯德基,麦当劳,Subway都不做做川菜,所以只能换地方,重新开始安排了。

 

Builder模式:

肯德基请了一个很高明的厨师,做了汉堡,薯条,可乐很多食物。Mm又想去吃kfc了,于是对服务员说想吃汉堡、可乐。那么服务员给她配了个汉堡+可乐套餐。下次她想吃汉堡和薯条,服务员给她配了个汉堡+薯条套餐。

这个例子中:厨师是builder他生产各种食物。服务员是Director,他把厨师做的食物搭配给客户满足客户的要求。客户换一种要求,服务员就给mm搭配一个套餐。因此生产食物和客户需求独立,代码耦合性低,重用性好。假如那一天厨师把生产的汉堡的配方变了,客户也不需要改变她的需求,只不过她得到不是原来那种汉堡而已。如果mm那天想吃川菜,只要kfc愿意,叫厨师做一份川菜,服务员做好搭配,客户的要求就能达到。对原来的业务一点影响也没有。

抱歉!评论已关闭.