`
iloveoracle
  • 浏览: 119426 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

设计模式生活实例

阅读更多
    &nbsp;&nbsp;&nbsp; 本文以生活场景中的实例来分析常见的设计模式,试图以一种通俗易懂的方式来解读设计模式。每个设计模式的分析从以下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 /> 
分享到:
评论

相关推荐

    设计模式之蝉

    此外,内容中提到的“单例模式”(Singleton pattern)是在软件工程中非常常见的一种设计模式,它用于确保一个类只有一个实例,并提供一个全局访问点。单例模式常常被用于管理共享资源,例如打印机的打印队列管理器...

    23种面向对象设计模式

    文档中的“23种设计模式学习笔记.doc”可能包含了对这23种模式的详细解释和实例,而“设计模式之我爱我家.doc”可能从一个更生活化的角度来阐述设计模式的概念。“软件23种设计模式,超级经典的.pdf”可能是对这些...

    Java设计模式案例(雷惊风)

    本资源"Java设计模式案例(雷惊风)"是由雷惊风(可能对应的是刘永雷)提供的,它包含了不到二十种常见的设计模式,并使用Java语言进行实现,旨在以通俗易懂的方式解释这些模式,并结合实际生活场景进行说明。...

    23个设计模式源码案例.zip

    《大话设计模式》这本书,通过各种生活中的例子,在小菜和大鸟的不断提问与回答过程中,对程序的不断重构演变,学习设计模式在案例中的适用性,更进一步掌握设计模式的异同和关键点。 ## 使用说明 &emsp;&emsp;...

    用生动的例子讲述设计模式

    根据提供的信息,我们可以看出这是一本关于设计模式的书籍,旨在通过生动的例子来解释各种设计模式的概念、用途及实现方式。接下来,我们将详细介绍书中部分章节的设计模式知识点。 ### 第1章:策略模式(Strategy ...

    Java 设计模式 之 现实实例讲解

    以上介绍的设计模式不仅有助于提高代码质量和可维护性,还能帮助你在日常生活中更加灵活地应对各种情况。希望通过对这些设计模式的学习,你能更好地应用到自己的项目中,并在追求女孩的过程中也能有所启发。

    活学活用 生活中的设计模式

    ### 活学活用:生活中的设计模式 本文旨在通过生动有趣的语言,将复杂的软件设计模式变得易于理解。文章围绕几种常见的设计模式展开,并通过实际案例解释了这些设计模式的应用场景及其背后的逻辑。 #### 1. 工厂...

    设计模式与现实生活,形象,生动

    ### 设计模式与现实生活 设计模式是在软件开发过程中对常见问题的一种...通过以上的生活实例,我们可以更加直观地理解这些设计模式的概念及其应用场景。希望这些生动的例子能帮助大家更好地掌握设计模式的相关知识。

    设计模式手册非常好!带有很多实际例子!

    设计模式手册非常好!每个模式都有多个代码实例,非常容易懂。

    韩顺平_java设计模式笔记

    韩顺平老师的Java设计模式课程通过生活中的实例和Spring框架中的应用,深入浅出地讲解了这些模式。 首先,我们来看一下原型设计模式。原型模式主要用于对象的复制,分为浅拷贝和深拷贝。浅拷贝只复制对象的引用,而...

    HeadFirst设计模式英文版

    本章还包括了对现实生活中设计模式的应用实例的观察与讨论,以此加深对设计模式概念的理解。 整本书籍涵盖了23种设计模式,包括创建型模式、结构型模式和行为型模式,每种模式都通过实际的编程示例进行了详细的讲解...

    设计模式精解-GoF 23种设计模式解析

    本书通过作者的实际经验和项目应用案例,帮助读者更好地理解和掌握这些设计模式。 ##### 0.2 设计模式解析后记 本书的编写过程不仅仅是对GoF 23种设计模式的学习总结,也是一个反思和提升的过程。作者分享了自己的...

    适配器设计模式ppt

    适配器设计模式 适配器设计模式是一种结构型设计模式,用于解决接口不兼容的问题。它允许两个原本不能一起工作的对象 совместно工作。 在现实生活中,我们经常遇到适配器的使用,例如欧式插座和笔记本...

    Java设计模式学习.pdf

    - 应用实例的理解对于深入掌握设计模式至关重要,包括生活中的例子和软件中的例子。 - 分析每个设计模式的优缺点和使用时的注意事项也是必要的。 2. 设计原则: - 单一职责原则(Single Responsibility ...

    深入浅出java设计模式(高清中文PDF)

    在深入浅出Java设计模式的高清中文PDF文件中,首先以一个生活化的例子引出了工厂模式的概念,介绍了工厂模式在面向对象编程中的重要性和实用性。文档详细讲解了20多种Java设计模式,并且在讲解的过程中包含了丰富的...

    Head First 设计模式(简体中文版)

    例如,书中可能通过“披萨店”这个例子来解释工厂模式,通过“动物园”来阐述装饰器模式,通过“角色扮演”来展示策略模式,这些实例既贴近生活,又易于理解。 在学习设计模式的过程中,读者会发现每个模式都有其...

    软件设计模式在嵌入式控制系统中的应用

    随着硬件能力的提升和应用需求的多样化,软件设计模式在嵌入式控制系统中的应用变得越来越重要,它可以提高软件的可复用性、可扩展性及可移植性。 首先,嵌入式系统的定义是围绕特定应用的计算机系统,该系统通常...

    关于java23种设计模式的有趣见解

    以上设计模式的解析不仅涵盖了它们的基本定义和应用场景,还通过生动的比喻帮助理解,展示了设计模式在实际生活中的潜在应用。通过学习和运用这些设计模式,开发者可以在软件设计中更好地解决复杂问题,提高代码质量...

    avascript设计模式.pdf

    ### JavaScript 设计模式知识点梳理 #### 1. JavaScript语言概述 JavaScript是目前应用最广泛的编程语言之一,...通过实例演示了JavaScript的各种编程范式和习惯用法,提供了对JavaScript设计模式实践应用的深刻理解。

    Head First Design Patterns 英文版 Head First设计模式

    书中不仅涉及了23个经典的设计模式,还融合了UML类图、实例代码以及大量的插图和幽默的对话,旨在让读者在轻松愉快的氛围中掌握设计模式的知识。 本书共有14章,每章都着重介绍几个设计模式,并在后续的章节中逐渐...

Global site tag (gtag.js) - Google Analytics