设计模式1
来源:互联网 发布:用python 编写操作系统 编辑:程序博客网 时间:2024/05/21 09:20
2008-0327:
今天学习了三个模式,突然想到以前一个mm到kfc吃汉堡的例子,蛮有意思。
简单工厂模式:
Mm到kfc对服务员说,我想吃汉堡,服务员把汉堡这个需求告诉厨师,厨师做好后给服务员,服务员把汉堡给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愿意,叫厨师做一份川菜,服务员做好搭配,客户的要求就能达到。对原来的业务一点影响也没有。- 简单工厂设计模式-设计模式(1)
- 简单工厂设计模式-设计模式(1)
- 设计模式(1):为什么使用设计模式
- 设计模式之工厂设计模式-1
- 模式设计1--单例设计模式
- 设计模式-1-工厂设计模式
- 【设计模式】## 1、单例设计模式 ##
- Java设计模式1:设计模式概论
- 设计模式_设计模式概述(1)
- 【设计模式】(1)--设计模式初探
- 设计模式1 设计原则
- 设计模式1-Adapter模式
- 设计模式-适配器模式(1)
- 设计模式1(工厂模式)
- 设计模式1:工厂模式
- 设计模式(1)--策略模式
- 设计模式(1): 工厂模式
- 设计模式-1-策略模式
- Fedora也推出Fedora 9正式版发行时间倒计时
- Spring 2.5 rc1与2.0的差别
- JSP 2.1对JSP2.0的改动
- php blog ---- 感谢一位朋友
- 隆重发布 Floppy Disk Image Editor v0.01 Bate
- 设计模式1
- JSP中5种对象总结
- 更换电子词典
- 有关Struts2的插件机制
- 修改struts2的日历插件jscalendar
- AJAX简单实现新闻拖放系统
- Struts2自带自动完成功能的问题
- 搭建适合开发人员的Oracle10g环境
- (原创)利用克拉默法则求解多元一次方程组