- 浏览: 114677 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (135)
- java (135)
- [转]c# 画圆角矩形 (1)
- 设计模式生活实例 (1)
- .nET2.0小技巧 (1)
- 从另一个角度看敏捷实践(一)--IPM:承诺的仪式 (1)
- javascript字符串转json对象 (1)
- 使用BeanUtils时,Date类型值为空的解决方法 (1)
- Lenovo V460+Ubuntu 11.10 无线网问题 (1)
- Lucene 索引和搜索过程核心类详解 (1)
- Android短信编解码方式 (1)
- 股神巴菲特十大致富秘籍 (1)
- Map遍历的三种方法 (1)
- Android中用Toast.cancel()方法优化toast内容的显示 (1)
- ViewFlipper “Receiver not registered” Error (1)
- javax.xml.transform.TransformerFactoryConfigurationError (1)
- JNI调用的注意事项 (1)
- JUnit单元测试感悟 (1)
- 用C#写定时关机的程序 (1)
- ASP.NET开发工具Web Matrix介绍 (1)
- MapXtreme2004代码 MapControl控件中显示地图文件 (1)
- 《使用 Microsoft .NET 的企业解决方案模式》读书笔记3 (1)
- 微创短信开发平台 (1)
- 谈谈Q+平台的技术实现 (1)
- 手机防盗软件实现(源码) (1)
- 虚析构函数(总结 帖子) (1)
- c语言中去除const修饰 (1)
- ORA-01012: not logged on 解决办法 (1)
- paypal提现如何省钱 (1)
- 数独suduku (1)
- MyISAM InnoDB 区别 (1)
- 随 笔 (1)
- Android上的log,日志相关 (1)
- 百度质量部实习居然通过了~ (1)
最新评论
-
野狐禅:
ext.get('imagebrowse') is null
ExtJs上传图片预览功能 -
zhuyl_wind:
不切实际,呵呵
[]5年内买车买房-理财篇 -
in南京:
关键你那两千块钱就够交一个多月的房租!换个城市你那六百也远远不 ...
[]5年内买车买房-理财篇 -
javac_xinyun:
呵呵,看完了,确实不错,貌似第一年的房租每月算进去 ,人际关系 ...
[]5年内买车买房-理财篇 -
dishikun:
貌似很不错,就是没把房租算进去!
[]5年内买车买房-理财篇
本文以生活场景中的实例来分析常见的设计模式,试图以一种通俗易懂的方式来解读设计模式。每个设计模式的分析从以下5个点进行阐述:<br />1、 <strong>定义</strong>:四人帮的《设计模式》书中对该设计模式的定义。<br />2、 <strong>实例</strong>:生活场景中的实例抽象。<br />3、 <strong>原始场景</strong>:实例中不带有设计模式思想的原始场景介绍。<br />4、 <strong>模式场景</strong>:实例中带有此设计模式思想的场景介绍。<br />5、 <strong>应用模式后的场景解析</strong>:将应用了设计模式思想的场景中的对象、事物与定义中的概念做映射对比,从而能更形象的理解此设计模式。<br /><span style="font-size: medium"><strong><span style="color: red">一、 观察者模式</span></strong></span><br />1. <strong>定义</strong>:定义了一种一对多的依赖关系,让多个观察者对象同时监听一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。<br />2. <strong>实例</strong>:上班时间玩游戏<br />3. <strong>原始场景</strong>:上班时间,很多人在老板出门办事不在的时候玩游戏,同时每个玩游戏的人又得留意着老板回来,只要老板一回来赶紧关闭游戏开始工作。<br />4. <strong>观察者模式场景</strong>:上班时间,很多人在老板出门办事不在的时候玩游戏,这些玩游戏的人叫前台秘书专门留意着老板回来,只要老板一回来这个前台秘书就通知玩游戏的人,然后玩游戏的人就赶紧关闭游戏开始工作。<br />5. <strong>应用模式后的场景解析</strong>:<br /><table class="bbcode"><tr><td><strong>场景中的object</strong></td><td><strong>定义中的概念</strong><tr><td>那些老板不在时玩游戏的人</td><td>多个观察者对象<tr><td>前台秘书</td><td>主题对象<tr><td>老板是否回来</td><td>状态<tr><td>老板回来了</td><td>状态发生变化<tr><td>前台秘书就通知玩游戏的人</td><td>通知所有观察者对象<tr><td>玩游戏的人赶紧关闭游戏开始工作</td><td>他们能够自动更新自己</table><br /><span style="font-size: medium"><strong><span style="color: red">二、 适配器模式</span></strong></span><br />1. <strong>定义</strong>:将一个类的接口转换成客户希望的另一个接口。adapter模式使得原来由于接口不兼容而不能一起工作的那些类可以在一起工作。<br />2. <strong>实例</strong>:外籍球员打球<br />3. <strong>原始场景</strong>:姚明去nba打球,因为不懂英语不能和教练正常交流。<br />4. <strong>适配器模式场景</strong>:姚明不懂英语,去nba打球,为了能和教练交流,姚明请了个翻译,通过翻译姚明能和教练正常交流。<br />5. <strong>应用模式后的场景解析</strong>:<br /><table class="bbcode"><tr><td><strong>场景中的object</strong></td><td><strong>定义中的概念</strong></td></tr><tr><td>外籍球员(姚明)</td><td>一个类的接口</td></tr><tr><td>客户</td><td>教练</td></tr><tr><td>客户希望的另一个接口</td><td>翻译</td></tr><tr><td>姚明和教练不能正常交流</td><td>接口不兼容而不能一起工作</td></tr><tr><td>姚明不懂英语,不能和教练正常交流,通过翻译姚明能和教练正常交流</td><td>由于接口不兼容而不能一起工作的那些类可以在一起工作</td></tr></table><br /><span style="font-size: medium"><strong><span style="color: red">三、 备忘录模式</span></strong></span><br />1. <strong>定义</strong>:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。<br />2. <strong>实例</strong>:打游戏<br />3. <strong>原始场景</strong>:玩通关游戏,玩到某一关失败了,又得重头再来。<br />4. <strong>备忘录模式场景</strong>:玩通关游戏,玩的过程中及时的保存游戏,失败后就重新载入最近保存的游戏接着再玩。<br />5. <strong>应用模式后的场景解析</strong>:<br /><table class="bbcode"><tr><td><strong>场景中的object</strong></td><td><strong>定义中的概念</strong></td></tr><tr><td>通关游戏</td><td>对象</td></tr><tr><td>游戏中的人物、场景、生命力、战斗力等</td><td>对象的内部状态</td></tr><tr><td>保存游戏</td><td>保存这个状态</td></tr><tr><td>重新载入最近保存的游戏</td><td>将该对象恢复到原先保存的状态</td></tr></table><br /><span style="font-size: medium"><strong><span style="color: red">四、 外观模式</span></strong></span><br />1. <strong>定义</strong>:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。<br />2. <strong>实例</strong>:炒股<br />3. <strong>原始场景</strong>:投资者自己选择各种股票去买。<br />4. <strong>外观模式场景</strong>:投资者选择一个基金会,由基金会帮助投资者选择股票,投资者不用再去了解各种股票以确定选择,具体选择什么股票交由基金会负责。<br />5. <strong>应用模式后的场景解析</strong>:<br /><table class="bbcode"><tr><td><strong>场景中的object</strong></td><td><strong>定义中的概念</strong></td></tr><tr><td>选择各种股票投资</td><td>子系统</td></tr><tr><td>各种股票</td><td>一组接口</td></tr><tr><td>基金会</td><td>一致的界面、高层接口</td></tr><tr><td>投资者不用再去了解各种股票以确定选择,具体选择什么股票交由基金会负责</td><td>使得这一子系统更加容易使用</td></tr></table><br /><br /><br /><span style="font-size: large"><strong>(未完待续……)</strong></span><br /><br /><br /><br /><br />
发表评论
-
百度质量部实习居然通过了~
2012-02-08 12:23 955[size=small;]? ? ?本来打算在软工所苦 ... -
Android上的log,日志相关
2012-02-07 14:18 1485摘自:http://blog.csdn.net/met ... -
随 笔
2012-02-04 13:39 564金风玉露一相逢,便胜却人间无数。英文版: chemis ... -
MyISAM InnoDB 区别
2012-02-02 16:59 698<h1 id="artibody ... -
数独suduku
2012-01-31 14:38 881sudu sudu sudu sudu sudu su ... -
paypal提现如何省钱
2011-12-28 16:58 1176据PayPal中文注册得知,如今很多收样品费的外贸商户 ... -
ORA-01012: not logged on 解决办法
2011-12-28 13:08 3418<span style="font-f ... -
c语言中去除const修饰
2011-12-21 10:54 1377[size=16px;]<span style= ... -
虚析构函数(总结 帖子)
2011-12-21 09:54 671<span style="" ... -
手机防盗软件实现(源码)
2011-12-20 12:54 911<a href="http://blo ... -
谈谈Q+平台的技术实现
2011-12-20 09:49 931这篇文章是我个人 ... -
微创短信开发平台
2011-12-19 11:39 735在网上闲逛,发现了一个站点,微创短信开发平台(http ... -
《使用 Microsoft .NET 的企业解决方案模式》读书笔记3
2011-12-19 10:24 714第3章 Web表示模式 没有一个设计策略能够适合所有情 ... -
MapXtreme2004代码 MapControl控件中显示地图文件
2011-12-15 14:29 851::<?xml:namespace prefix ... -
ASP.NET开发工具Web Matrix介绍
2011-12-15 13:39 930<p class="MsoPlain ... -
用C#写定时关机的程序
2011-12-15 11:14 670</span></font>& ... -
JUnit单元测试感悟
2011-12-14 11:29 831<p class="MsoNorma ... -
JNI调用的注意事项
2011-12-14 09:34 717JNI的简单教程网上很多,看看就能够明白,照着操作也基 ... -
javax.xml.transform.TransformerFactoryConfigurationError
2011-12-13 13:34 810<span style="" ... -
ViewFlipper “Receiver not registered” Error
2011-12-12 10:59 1094偶尔出现这个错误: <span> < ...
相关推荐
《大话设计模式》这本书,通过各种生活中的例子,在小菜和大鸟的不断提问与回答过程中,对程序的不断重构演变,学习设计模式在案例中的适用性,更进一步掌握设计模式的异同和关键点。 ## 使用说明   ...
包含不到二十种常用设计模式案例,java语言实现,通俗易懂,根据生活实际情况编写
设计模式手册非常好!每个模式都有多个代码实例,非常容易懂。
作者用C#和Java两种语言,借助现实生活范例和图片演示,全面阐释GRASP及GoF 23种设计模式的概念及其编程应用,帮助你领悟设计模式的思想及精华,并将其融会贯通、灵活应用到自己的开发过程中。 全书用两章篇幅对...
作者用C#和Java两种语言,借助现实生活范例和图片演示,全面阐释GRASP及GoF 23种设计模式的概念及其编程应用,帮助你领悟设计模式的思想及精华,并将其融会贯通、灵活应用到自己的开发过程中。 全书用两章篇幅对...
本系列主要记录设计模式的意图是什么,它要解决一个什么问题,什么时候可以使用它;它是如何解决的,掌握它的结构图,记住它的关键代码;能够想到至少两个它的应用实例,一个生活中的,一个软件中的;这个模式的优...
作者用C#和Java两种语言,借助现实生活范例和图片演示,全面阐释GRASP及GoF 23种设计模式的概念及其编程应用,帮助你领悟设计模式的思想及精华,并将其融会贯通、灵活应用到自己的开发过程中。 全书用两章篇幅对...
用享元模式分析并实现一个具体案例。在一家咖啡店中客户每买一杯咖啡,咖啡制做系统就相应地创建该杯咖啡的配料表,并将其发送给店内的咖啡制做机,咖啡制做机接收到系统发送的配料表后便开始制造客户所买的咖啡。...
作者用C#和Java两种语言,借助现实生活范例和图片演示,全面阐释GRASP及GoF23种设计模式的概念及其编程应用,帮助你领悟设计模式的思想及精华,并将其融会贯通、灵活应用到自己的开发过程中。 全书用两章篇幅对设计...
如何学好设计模式 现如今网上和书上都有大量的设计模式的教程,... 生活中的例子的确可以帮助我们理解设计模式,这是毋庸置疑的,但是想要真正用好设计模式,实际项目中的案例是必不可少的,这也是我分享这个资料的原
行为型模式+结构型模式+创建型模式:三大设计模式实例剖析与深入解读 行为型模式 备忘录模式 +结构型模式 创建型模式总结 +创建型模式
作者用C#和Java两种语言,借助现实生活范例和图片演示,全面阐释GRASP及GoF 23种设计模式的概念及其编程应用,帮助你领悟设计模式的思想及精华,并将其融会贯通、灵活应用到自己的开发过程中。 全书用两章篇幅对设计...
作者用C#和Java两种语言,借助现实生活范例和图片演示,全面阐释GRASP及GoF 23种设计模式的概念及其编程应用,帮助你领悟设计模式的思想及精华,并将其融会贯通、灵活应用到自己的开发过程中。 全书用两章篇幅对...
作者用C#和Java两种语言,借助现实生活范例和图片演示,全面阐释GRASP及GoF 23种设计模式的概念及其编程应用,帮助你领悟设计模式的思想及精华,并将其融会贯通、灵活应用到自己的开发过程中。 全书用两章篇幅对...
作者用C#和Java两种语言,借助现实生活范例和图片演示,全面阐释GRASP及GoF 23种设计模式的概念及其编程应用,帮助你领悟设计模式的思想及精华,并将其融会贯通、灵活应用到自己的开发过程中。 全书用两章篇幅对...
本文实例讲述了javascript设计模式 – 装饰模式原理与应用。分享给大家供大家参考,具体如下: 介绍:装饰模式可以在不改变一个对象本身功能的基础上给对象增加额外的新行为。在现实生活中,这种情况也到处存在,...
采用同一套网店模板的网店除了里面所展示的内容不一样以外,网店的风格样式几乎一致,除了一些定制化的功能,比如logo等,请使用享元模式来模拟此问题,绘制享元模式类图,并绘制该实例的类图,并编写代码演示结果。
本资料通过生活案例和具体事例讲解简单工厂设计模式的原理以及应用,对于初学者非常有用
使用了一个个的demo案例,以通俗易懂的生活案例解析软件开发设计原则,掌握开发细节。写出耦合度低、易于扩展、更容易维护的优质代码 代码中的注释信息,通俗易懂,凝结了本人的思考,让你更快掌握软件设计的基本...