??xml version="1.0" encoding="utf-8" standalone="yes"?> 本专题ؓ(f) Java 软g工程师们提供了面?Java 的设计模式和建模斚w相关的文章和教程。帮助读者理解、学?fn)作Z业Y件工E师必需掌握的设计模式与建模技术?/p>
UML基础Q统一建模语言?/a> l一建模语言(UML) 版本 2.0 UML 基础Q类?/a> UML 基础Q序列图 UML 基础Q组件图 UML 基础Q组件图 Java 建模QUML 工作,W?1 部分Q序列图? Java 建模Q?UML 工作:(x)W?2 部分Q序列图中的条g逻辑 Java 建模Q?UML 工作,W?3 部分Q在用例建模上的用户接口逻辑 Java 建模QUML 工作,W?4 部分 Java 建模Q子整体软g开发,W?1 部分Q宣a Java 建模Q子整体软g开发,W?2 部分Q需求收集:(x)工作的恰当过E?/a> JML 入门 本专题ؓ(f) Java 软g工程师们提供了面?Java 的设计模式和建模斚w相关的文章和教程。帮助读者理解、学?fn)作Z业Y件工E师必需掌握的设计模式与建模技术?/p>
Factory Method 模式?Javamail 中的应用 ?Java 中应用设计模?- Factory Method Factory 模式的优?/a> ?Java 中应用设计模?-- Singleton Observer 模式?J2EE 中的实现 State 模式在客L(fng)软g中的应用 在方法签名中使用控制反{QIoCQ?/a> Single Call 模式 Java 设计模式 201Q超四人组 界面l装器模?/a> 数据校验器架构模式组 反模式可以如何提高编E?/a> ?Java cd看设计模式,W一部分 ?Java cd看设计模式,W二部分 ?Java cd看设计模式,W三部分 ?Java cd看设计模式,W四部分 ?Java cd看设计模式,W五部分 使用设计模式改善E序l构Q一Q?/a> 使用设计模式改善E序l构Q二Q?/a> 使用设计模式改善E序l构Q三Q?/a> 本专题ؓ(f) Java 软g工程师们提供了面?Java 的设计模式和建模斚w相关的文章和教程。帮助读者理解、学?fn)作Z业Y件工E师必需掌握的设计模式与建模技术?/p>
Factory Method 模式?Javamail 中的应用 ?Java 中应用设计模?- Factory Method Factory 模式的优?/a> ?Java 中应用设计模?-- Singleton Observer 模式?J2EE 中的实现 State 模式在客L(fng)软g中的应用 在方法签名中使用控制反{QIoCQ?/a> Single Call 模式 Java 设计模式 201Q超四人组 界面l装器模?/a> 数据校验器架构模式组 反模式可以如何提高编E?/a> ?Java cd看设计模式,W一部分 ?Java cd看设计模式,W二部分 ?Java cd看设计模式,W三部分 ?Java cd看设计模式,W四部分 ?Java cd看设计模式,W五部分 使用设计模式改善E序l构Q一Q?/a> 使用设计模式改善E序l构Q二Q?/a> 使用设计模式改善E序l构Q三Q?/a>
l一建模语言QUMLQ基
Java 建模QUML 工作?/a>
Java 建模Q子整体软g开?/a>
Java 建模语言QJava Modeling LanguageQJMLQ?/a>
l一建模语言QUMLQ基
回顾 20 世纪晚期 -- 准确地说?1997 q_(d)OMG l织QObject Management Group 对象理l织Q发布了l一建模语言QUnified Modeling LanguageQUMLQ。UML 的目标之一是为开发团队提供标准通用的设计语a来开发和构徏计算机应用。UML 提出了一套IT专业人员期待多年的统一的标准徏模符受通过使用 UMLQ这些h员能够阅d交流pȝ架构和设计规?-像建筑工h多年来所使用的徏{设计图一栗?/p>
所谓的“模型驱动”开发(MDDQ方式,已经昄Z它们从根本性上提高软g质量和开发生产力斚w的潜力。与传统的方法相比,q种方式是基于较高层ơ上的抽象和更好的自动化利用的。由于徏模语a对MDD的成功具有关键性的作用Q所以最q完成了对基于工业标准的l一建模语言QUMLQ的主要修订。随着一些重要的新的建模能力d到其中――比如更_地获得Y件架构的能力――这ơ修订的主要Ҏ(gu)得语a定义更加_Q从而达C更高层次的自动化。这文章解释了q一Ҏ(gu)是如何实现的,q且描述?UML 2.0 的其他亮炏V?/p>
?UML 2 中,作ؓ(f)新结构图cd的最重要实例Q类囑֏以在整个软g开发生命周期中Q被分析师,业务建模人员Q开发者和试者用的。本文提供了全面的介l?/p>
本文作ؓ(f) UML 基础的、关于统一建模语言的基囄一pd文章的一部分Q提供对序列囄详细介绍。它也介l了最q的 UML 2.0 规范的几个新W号元g?
q篇文章介绍lg图,一个在新的l一建模语言 2.0 中规定的l构图?
q篇文章介绍lg图,一个在新的l一建模语言 2.0 中规定的l构图?
Java 建模QUML 工作?/a>
Granville Miller 在其C栏的W一部分中介l了“l一建模语言”(UML) 的一个构Ӟ(x)序列图。在整个设计q程中都?x)用到序列图Q此囄于演C系l执行时参与者与对象之间的内部交互。让我们跟着 Granville 一起创建其中一个图Q我们将使用一个贷Ƒ֤理应用程序作为示例?/p>
Granville l箋讨论“l一建模语言”和序列图的绘制。他仔细研究了序列图l制q程中条仉辑的角Ԍq讨ZZ么要在图中包含或排除条g和@环。Granville q描qC序列囄两种形?-- 常规和实?-- q说明了它们在开发周期中各自的应用?/p>
在这一部分?Java 建模中,Granville 引领(zhn)进入介于徏模和Ҏ(gu)之间的区域,同时看一下通过用例建模所攉的需求。他特别着重讨Z用户接口、系l接口和用例描述之间的关pR尽现在正试图在用例中包括用户接口逻辑Q但q通常被认为是不好的Ş式。接着Q?Grancille 用序列图和系l接口告诉?zhn)具体原因。请点击文章剙或底部的讨论Q参与讨坛,与本文作者和其他读者分享?zhn)?gu)文的x?
本文深入讨论用例囄基本lg之一Q参与者(actorQ。参与者不仅在 UML 建模中不可或~,而且在创?Java 应用E序Ӟ它也能v到很重要的作用,甚至可以?J2EE 应用E序设计中的模式提出。对于开发诸?Web 服务Q在其系l设计中Q外部交互扮演了很重要的角色Q这L(fng)复杂pȝQ参与者变得尤光要。Granville 用序列图和类图来阐述参与者在用例囄l制?Java 应用E序开发中的角艌Ӏ?
Java 建模Q子整体软g开?/a>
Granville Miller 暂时攑ּ需求收集主题,着手讨论另一个引人入胜的主题Q子整体软g~程?让我们找找这个方法如何补充和扩展灉|开发运动原则,以及(qing)它在L开发界中的出现如何可能改变软g开发者的教育和Y件开发实c(din)请?讨论论坛与作者和其他读者分享?zhn)关于本文的想法?
Granville Miller l箋他关于子整体软g开发的讨论Qƈ在概念上寚w求收集作了概括?让我们看看四个最常见的需求收集过E??功能Ҏ(gu)、用h景、用例和传统的Y仉求规??怎样适应灉|的Y件开发过E更qK的环境?请在 讨论论坛与作者和其他读者分享?zhn)关于本文的想法?q程太少Q非凡的做^凡的事; q程太多Q即使是非凡的h也不能做非凡的事?
Java 建模语言QJava Modeling LanguageQJMLQ?/a>
Java 建模语言QJava Modeling LanguageQJMLQ是一U用来进行详l设计的表示法(notationQ,它倡导一U思考方法和cȝ新思\。在q篇入门文章中,Java ~程N Joe Verzulli 介绍?JML ?qing)其一些最重要的说明构造?
]]>
Factory Method 模式
Singleton 模式
Observer 模式
State 模式
控制反{QIoCQ模?/a>
Single Call 模式
其它模式
反模?/a>
?Java cd看设计模?/a>
使用设计模式改善E序l构
Factory Method 模式
设计模式在Y件工E中占有重要CQ?JavaMail ?Java q_的一个扩展,为管理电(sh)子邮件提供了l一的应用编E接口。本文讨?Factory Method 设计模式在Javamail 中的应用?
在设计模式中,Factory Method也是比较单的一?但应用非常广泛,EJB,RMI,COM,CORBA,Swing中都可以看到此模式的影子Q它是最重要的模式之一。在很多地方我们都会(x)看到xxxFactoryq样命名的类,那么,什么是Factory Method,Z么要用这个模?如何用Java语言来实现该模式,q就是本文想要带l大家的内容?
最常见的构造一?Object 的方法是通过构造函? ? String strTemp = new String('Hello World'); 其实q有一U一U更灉|的创建Object 的方?--利用Factory 模式. q是著名?四h?(Gangs Of Four)的经怹?设计模式'[(Design Pattern) 所记蝲?3模式之一. 它有着构造函C可比拟的一些优?
Singleton 模式
本文介绍了设计模式中 Singleton 的基本概?对其功能和用途进行了单的分析,列出了通常实现 Singleton 的几U方?q给Z详细的Java 代码?
Observer 模式
设计模式是经验的文档化。它是对被用来在特定场景下解决一般设计问题的cd怺通信的对象的描述。更通俗的来_(d)它是一个问?解决Ҏ(gu)寏V一旦我们掌握了设计模式Q就{于拥有了一支强有力的专安伍。它甚至能够佉K向对象的新手利用前h的经验找责明的cd对象Q从而获得优雅的解决Ҏ(gu)?
State 模式
在对一?J2EE 目的重构、增加新功能的过E中Q对客户?GUI E序Q我们用了 State 模式。结果显C,该模式的使用Q不但减了客户?GUI E序的程序规模(LOCQ,而且Q该部分的开发及(qing)单元试旉大大减少Q同Ӟ在集成测试中发现的缺h量比使用该模式前q_减少?倍。本文就该项目中使用 State 模式的方式进行介l?
控制反{QIoCQ模?/a>
控制反{QIoCQ模式通常用于lg。本文描qC如何Ҏ(gu)法签名用该模式Q以减少lg间的耦合q改善性能。IBM Global Business Services N Andr Fachat 用两个例子展CZq种Ҏ(gu)的灵zL?
Single Call 模式
在本文中Q作者向大家讲述?Single Call 模式的原理,同时也介l了 Single Call 模式的实现问题?
其它模式
(zhn)可以在本教E中发现Q到底还有多设计模式?zhn)不知道。首先,我们?x)探讨一些资源,学习(fn)设计模式的新手通常?x)忽略它们。这些资源ؓ(f)各种计算领域Q如商业应用E序、Web 应用E序Q甚?Web 设计Q提供了极ؓ(f)有用的模式?
本文提出了一U界面设计中的架构模式-界面l装器模式,它致力于分解界面Q将界面和组装行耦,界面逻辑处理与领域逻辑处理解耦,q样我们在开?GUI 胖客L(fng)界面应用时可以从众多的界面控制管理中解脱出来Q而专注于我们的后C务逻辑的开发。通过该模式,我们可以动态地l装我们的界面,我们甚至q可以在我们的界面中L地插?transaction 事务?session ?x)话理?
本文阐述软g架构与设计模式,它ؓ(f)架构师和开发h员提供了一l关于数据校验的架构模式Q隔L验器Q可l装校验器,动态策略校验器Q动态注册校验器{)(j)Q数据校验是Mcd的开发中都不可或~的环节Q如果没有统一的架构,可能校验代码?x)遍布整个应用,如何数据校验与应用逻辑解耦,如何适应各种_度的数据和各种复杂E度业务规则Q正是本文要探讨的?
反模?/a>
设计模式对Y件开发来说很重要Q这一点从它在技术N易新M所占的数量可见一斑。不q,鉴于其在开发过E中的实用性,设计模式只解决了问题的一半。反模式 ?描述“对生绝对负面结果的问题的一U常用解x?#8221; ?旨在通过?Java E序员展C如何避免常见的 Java 陷阱来解决问题的另一半?
?Java cd看设计模?/a>
在这一部分的内容中Q介l的是一个相对简单但功能强大的模式:(x)Observer 模式。希望通过q部分地叙述Q大家看了之后,能够对设计模式有一个比较全面地Q感性的认识?
q部分及(qing)以后的内容,会(x)步入正题Q从 Java cd的分析入手,来阐叙设计模式是如何应用C个完的设计中的。实际上QJava cd非常的庞杂,q儿不可能把所有能够找到的设计模式的例子一一列DQ只是找了一些容易发现的例子。实际上也没有必要,因ؓ(f)只要对一个设计模式有_的理解,对于它的具体应用而言Q倒是一件不是很困难的事情?
主要介绍几个l构型的模式?Bridge 模式?Decorator 模式。对?Bridge 模式可能需要更多的理解Q因为它在很大程度上_(d)例示了设计模式的基本的设计思\和原则?
在上一部分中,介绍了两个结构型的模式:(x)Bridge和Decorator。这一部分的内容,会(x)接着上面的讲解,l箋我们的设计模式之旅?
有了前面诸多设计模式的基Q这儿可以提Z个比较特D的模式 MVC。MVCq不属于 GOF ?23 个设计模式之列,但是它在 GOF 的书中作Z个重要的例子被提出来Qƈl予了很高的评h(hun)。一般的来讲Q我们认为GOF?3个模式是一些中U的模式Q在它下面还可以抽象Z些更Z般的低层的模式,在其上也可以通过l合来得C些高U的模式。MVC可以看作是一些模式进行组合之后的l果Q实际上QMVC的出现要早于设计模式的提出,q而只是对它在设计模式的基上进行在分析Q。如果没有前面的基础Q理解MVC或许?x)有一些困难?
使用设计模式改善E序l构
设计模式是对特定问题l过无数ơ经验ȝ后提出的能够解决它的优雅的方案。但是,如果惌真正使设计模式发挥最大作用,仅仅知道设计模式是什么,以及(qing)它是如何实现的是很不够的Q因为那样就不能使你对于设计模式有真正的理解Q也׃能够在自q设计中正、恰当的使用设计模式。本文试图从另一个角度(设计模式的意图、动机)(j)来看待设计模式,通过q种新的思\Q设计模式会(x)变得非常贴近你的设计q程Qƈ且能够指对{简化你的设计,最l将?x)导Z个优U的解x案?
在本pd的第一文章中Q描qC如何通过设计模式来指导我们的E序重构q程Qƈ且着重介l了设计模式意图、动机的重要性。在本文中我们将l箋上篇文章q行讨论Q这ơ主要着重于设计模式的适用性,对于设计模式适用性的掌握有助于从另一个不同的斚w来判断一个设计模式是否真正适用于我们的实际问题Q从而做出明智的选择?
设计模式在某U程度上实能够改善我们的程序结构,使设计具有更好的Ҏ(gu)。也正是׃q个原因Q会(x)D我们可能q度的用它。程序结构具有过度的、不必要的灵zL和E序l构没有灉|性一样都是有害的
设计模式
Java 建模
Factory Method 模式
Singleton 模式
Observer 模式
State 模式
控制反{QIoCQ模?/a>
Single Call 模式
其它模式
反模?/a>
?Java cd看设计模?/a>
使用设计模式改善E序l构
Factory Method 模式
设计模式在Y件工E中占有重要CQ?JavaMail ?Java q_的一个扩展,为管理电(sh)子邮件提供了l一的应用编E接口。本文讨?Factory Method 设计模式在Javamail 中的应用?
在设计模式中,Factory Method也是比较单的一?但应用非常广泛,EJB,RMI,COM,CORBA,Swing中都可以看到此模式的影子Q它是最重要的模式之一。在很多地方我们都会(x)看到xxxFactoryq样命名的类,那么,什么是Factory Method,Z么要用这个模?如何用Java语言来实现该模式,q就是本文想要带l大家的内容?
最常见的构造一?Object 的方法是通过构造函? ? String strTemp = new String('Hello World'); 其实q有一U一U更灉|的创建Object 的方?--利用Factory 模式. q是著名?四h?(Gangs Of Four)的经怹?设计模式'[(Design Pattern) 所记蝲?3模式之一. 它有着构造函C可比拟的一些优?
Singleton 模式
本文介绍了设计模式中 Singleton 的基本概?对其功能和用途进行了单的分析,列出了通常实现 Singleton 的几U方?q给Z详细的Java 代码?
Observer 模式
设计模式是经验的文档化。它是对被用来在特定场景下解决一般设计问题的cd怺通信的对象的描述。更通俗的来_(d)它是一个问?解决Ҏ(gu)寏V一旦我们掌握了设计模式Q就{于拥有了一支强有力的专安伍。它甚至能够佉K向对象的新手利用前h的经验找责明的cd对象Q从而获得优雅的解决Ҏ(gu)?
State 模式
在对一?J2EE 目的重构、增加新功能的过E中Q对客户?GUI E序Q我们用了 State 模式。结果显C,该模式的使用Q不但减了客户?GUI E序的程序规模(LOCQ,而且Q该部分的开发及(qing)单元试旉大大减少Q同Ӟ在集成测试中发现的缺h量比使用该模式前q_减少?倍。本文就该项目中使用 State 模式的方式进行介l?
控制反{QIoCQ模?/a>
控制反{QIoCQ模式通常用于lg。本文描qC如何Ҏ(gu)法签名用该模式Q以减少lg间的耦合q改善性能。IBM Global Business Services N Andr Fachat 用两个例子展CZq种Ҏ(gu)的灵zL?
Single Call 模式
在本文中Q作者向大家讲述?Single Call 模式的原理,同时也介l了 Single Call 模式的实现问题?
其它模式
(zhn)可以在本教E中发现Q到底还有多设计模式?zhn)不知道。首先,我们?x)探讨一些资源,学习(fn)设计模式的新手通常?x)忽略它们。这些资源ؓ(f)各种计算领域Q如商业应用E序、Web 应用E序Q甚?Web 设计Q提供了极ؓ(f)有用的模式?
本文提出了一U界面设计中的架构模式-界面l装器模式,它致力于分解界面Q将界面和组装行耦,界面逻辑处理与领域逻辑处理解耦,q样我们在开?GUI 胖客L(fng)界面应用时可以从众多的界面控制管理中解脱出来Q而专注于我们的后C务逻辑的开发。通过该模式,我们可以动态地l装我们的界面,我们甚至q可以在我们的界面中L地插?transaction 事务?session ?x)话理?
本文阐述软g架构与设计模式,它ؓ(f)架构师和开发h员提供了一l关于数据校验的架构模式Q隔L验器Q可l装校验器,动态策略校验器Q动态注册校验器{)(j)Q数据校验是Mcd的开发中都不可或~的环节Q如果没有统一的架构,可能校验代码?x)遍布整个应用,如何数据校验与应用逻辑解耦,如何适应各种_度的数据和各种复杂E度业务规则Q正是本文要探讨的?
反模?/a>
设计模式对Y件开发来说很重要Q这一点从它在技术N易新M所占的数量可见一斑。不q,鉴于其在开发过E中的实用性,设计模式只解决了问题的一半。反模式 ?描述“对生绝对负面结果的问题的一U常用解x?#8221; ?旨在通过?Java E序员展C如何避免常见的 Java 陷阱来解决问题的另一半?
?Java cd看设计模?/a>
在这一部分的内容中Q介l的是一个相对简单但功能强大的模式:(x)Observer 模式。希望通过q部分地叙述Q大家看了之后,能够对设计模式有一个比较全面地Q感性的认识?
q部分及(qing)以后的内容,会(x)步入正题Q从 Java cd的分析入手,来阐叙设计模式是如何应用C个完的设计中的。实际上QJava cd非常的庞杂,q儿不可能把所有能够找到的设计模式的例子一一列DQ只是找了一些容易发现的例子。实际上也没有必要,因ؓ(f)只要对一个设计模式有_的理解,对于它的具体应用而言Q倒是一件不是很困难的事情?
主要介绍几个l构型的模式?Bridge 模式?Decorator 模式。对?Bridge 模式可能需要更多的理解Q因为它在很大程度上_(d)例示了设计模式的基本的设计思\和原则?
在上一部分中,介绍了两个结构型的模式:(x)Bridge和Decorator。这一部分的内容,会(x)接着上面的讲解,l箋我们的设计模式之旅?
有了前面诸多设计模式的基Q这儿可以提Z个比较特D的模式 MVC。MVCq不属于 GOF ?23 个设计模式之列,但是它在 GOF 的书中作Z个重要的例子被提出来Qƈl予了很高的评h(hun)。一般的来讲Q我们认为GOF?3个模式是一些中U的模式Q在它下面还可以抽象Z些更Z般的低层的模式,在其上也可以通过l合来得C些高U的模式。MVC可以看作是一些模式进行组合之后的l果Q实际上QMVC的出现要早于设计模式的提出,q而只是对它在设计模式的基上进行在分析Q。如果没有前面的基础Q理解MVC或许?x)有一些困难?
使用设计模式改善E序l构
设计模式是对特定问题l过无数ơ经验ȝ后提出的能够解决它的优雅的方案。但是,如果惌真正使设计模式发挥最大作用,仅仅知道设计模式是什么,以及(qing)它是如何实现的是很不够的Q因为那样就不能使你对于设计模式有真正的理解Q也׃能够在自q设计中正、恰当的使用设计模式。本文试图从另一个角度(设计模式的意图、动机)(j)来看待设计模式,通过q种新的思\Q设计模式会(x)变得非常贴近你的设计q程Qƈ且能够指对{简化你的设计,最l将?x)导Z个优U的解x案?
在本pd的第一文章中Q描qC如何通过设计模式来指导我们的E序重构q程Qƈ且着重介l了设计模式意图、动机的重要性。在本文中我们将l箋上篇文章q行讨论Q这ơ主要着重于设计模式的适用性,对于设计模式适用性的掌握有助于从另一个不同的斚w来判断一个设计模式是否真正适用于我们的实际问题Q从而做出明智的选择?
设计模式在某U程度上实能够改善我们的程序结构,使设计具有更好的Ҏ(gu)。也正是׃q个原因Q会(x)D我们可能q度的用它。程序结构具有过度的、不必要的灵zL和E序l构没有灉|性一样都是有害的
]]>
工厂模式Q客L(fng)和工厂类分开。消费者Q何时候需要某U品,只需向工厂请求即可。消费者无M改就可以接纳C品。缺Ҏ(gu)当品修Ҏ(gu)Q工厂类也要做相应的修改。如Q如何创建及(qing)如何向客L(fng)提供?
2、BUILDER—MM最爱听的就是“我׃”这句话了,见到不同地方的MM,要能够用她们的方a跟她说这句话哦,我有一个多U语a译机,上面每种语言都有一个按键,见到MM我只要按对应的键Q它?yu)p够用相应的语a说出“我׃”这句话了,国外的MM也可以轻松搞掂,q就是我的“我׃”builder。(q一定比军在伊拉克用的译机好卖)(j)
建造模式:(x)品的内部表象和品的生成q程分割开来,从而一个徏造过E生成具有不同的内部表象的品对象。徏造模式得品内部表象可以独立的变化Q客户不必知道品内部组成的l节。徏造模式可以强制实行一U分步骤q行的徏造过E?
3、FACTORY METHOD—请MM去麦当劳吃汉堡,不同的MM有不同的口味Q要每个都记住是一件烦(ch)人的事情Q我一般采用Factory Method模式Q带着MM到服务员那儿Q说“要一个汉堡”,具体要什么样的汉堡呢Q让MM直接跟服务员说就行了?
工厂Ҏ(gu)模式Q核心工厂类不再负责所有品的创徏Q而是具体创建的工作交给子类dQ成Z个抽象工厂角Ԍ仅负责给出具体工厂类必须实现的接口,而不接触哪一个品类应当被实例化q种l节?
4、PROTOTYPE—跟MM用QQ聊天Q一定要说些深情的话语了Q我搜集了好多肉ȝ情话Q需要时只要copy出来攑ֈQQ里面p了,q就是我的情话prototype了。(100块钱一份,你要不要Q?
原始模型模式Q通过l出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的Ҏ(gu)创徏出更多同cd的对象。原始模型模式允许动态的增加或减品类Q品类不需要非得有M事先定的等U结构,原始模型模式适用于Q何的{l构。缺Ҏ(gu)每一个类都必配备一个克隆方法?
5、SINGLETON—俺?个漂亮的老婆Q她们的老公都是我,我就是我们家里的老公SigletonQ她们只要说道“老公”,都是指的同一个hQ那是?刚才做了个梦啦,哪有q么好的?
单例模式Q单例模式确保某一个类只有一个实例,而且自行实例化ƈ向整个系l提供这个实例单例模式。单例模式只应在有真正的“单一实例”的需求时才可使用?
l构型模?
6、ADAPTER—在朋友聚会(x)上碰C一个美女SarahQ从香港来的Q可我不?x)说_语Q她不会(x)说普通话Q只好求助于我的朋友kent了,他作为我和Sarah之间的AdapterQ让我和Sarah可以怺交谈?也不知道他会(x)不会(x)耍我)
适配器(变压器)(j)模式Q把一个类的接口变换成客户端所期待的另一U接口,从而原本因接口原因不匚w而无法一起工作的两个c能够一起工作。适配cd以根据参数返q一个合适的实例l客L(fng)?
7、BRIDGE—早上碰到MMQ要说早上好Q晚上碰到MMQ要说晚上好Q碰到MMI了件新衣服Q要说你的衣服好漂亮哦,到MM新做的发型,要说你的头发好漂亮哦。不要问我“早上碰到MM新做了个发型怎么说”这U问题,自己用BRIDGEl合一下不p?
桥梁模式Q将抽象化与实现化脱耦,使得二者可以独立的变化Q也是说将他们之间的强兌变成弱关联,也就是指在一个Y件系l的抽象化和实现化之间用组?聚合关系而不是承关p,从而两者可以独立的变化?
8、COMPOSITE—Mary今天q生日。“我q生日,你要送我一件礼物。”“嗯Q好吧,d店,你自己挑。”“这件T恤挺漂亮Q买Q这条裙子好看,乎ͼq个包也不错Q买。”“喂Q买了三件了呀Q我只答应送一件礼物的哦。”“什么呀QT恤加裙子加包包,正好配成一套呀Q小姐,ȝ(ch)你包h。”“……”,MM都会(x)用Composite模式了,你会(x)了没有?
合成模式Q合成模式将对象l织到树(wi)l构中,可以用来描述整体与部分的关系。合成模式就是一个处理对象的?wi)结构的模式。合成模式把部分与整体的关系用树(wi)l构表示出来。合成模式得客L(fng)把一个个单独的成分对象和׃们复合而成的合成对象同{看待?
9、DECORATOR—Maryq完轮到Sarlyq生日,q是不要叫她自己挑了Q不然这个月伙食费肯定玩完,拿出我去q在华山上照的照片Q在背面写上“最好的的礼物,是׃的Fita”,再到街上C品店买了个像框Q卖C品的MM也很漂亮哦)(j)Q再N壁搞术设计的Mike设计了一个漂亮的盒子装v来……,我们都是DecoratorQ最l都在修饰我q个人呀Q怎么P看懂了吗Q?
装饰模式Q装饰模式以对客L(fng)透明的方式扩展对象的功能Q是l承关系的一个替代方案,提供比承更多的灉|性。动态给一个对象增加功能,q些功能可以再动态的撤消。增加由一些基本功能的排列l合而生的非常大量的功能?
10、FACADE—我有一个专业的Nikon相机Q我喜Ƣ自己手动调光圈、快门,q样照出来的照片才专业,但MM可不懂这些,教了半天也不?x)。幸好相机有Facade设计模式Q把相机调整到自动档Q只要对准目标按快门p了,一切由相机自动调整Q这样MM也可以用q个相机l我拍张照片了?
门面模式Q外部与一个子pȝ的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系l更易于使用。每一个子pȝ只有一个门面类Q而且此门面类只有一个实例,也就是说它是一个单例模式。但整个pȝ可以有多个门面类?
11、FLYWEIGHT—每天跟MM发短信,手指都篏MQ最q买了个新手机,可以把一些常用的句子存在手机里,要用的时候,直接拿出来,在前面加上MM的名字就可以发送了Q再不用一个字一个字敲了。共享的句子是FlyweightQMM的名字就是提取出来的外部特征Q根据上下文情况使用?
享元模式QFLYWEIGHT在拳?yn)L赛中指最轻量U。n元模式以׃n的方式高效的支持大量的细_度对象。n元模式能做到׃n的关键是区分内蕴状态和外蕴状态。内蕴状态存储在享元内部Q不?x)随环境的改变而有所不同。外蕴状态是随环境的改变而改变的。外蕴状态不能媄(jing)响内蕴状态,它们是相互独立的。将可以׃n的状态和不可以共享的状态从常规cM区分开来,不可以׃n的状态从c里剔除出去。客L(fng)不可以直接创׃n的对象,而应当用一个工厂对象负责创׃n的对象。n元模式大q度的降低内存中对象的数量?
12、PROXY—跟MM在网上聊天,一开头L“hi,你好?“你从哪儿来呀Q”“你多大了?”“n高多呀Q”这些话Q真?ch)hQ写个程序做为我的Proxy吧,凡是接收到这些话都设|好了自动的回答Q接收到其他的话时再通知我回{,怎么P酷吧?
代理模式Q代理模式给某一个对象提供一个代理对象,q由代理对象控制Ҏ(gu)对象的引用。代理就是一个h或一个机构代表另一个h或者一个机构采取行动。某些情况下Q客户不x者不能够直接引用一个对象,代理对象可以在客户和目标对象直接起到中介的作用。客L(fng)分L不出代理主题对象与真实主题对象。代理模式可以ƈ不知道真正的被代理对象,而仅仅持有一个被代理对象的接口,q时候代理对象不能够创徏被代理对象,被代理对象必Lpȝ的其他角色代为创建ƈ传入?
行ؓ(f)模式
13、CHAIN OF RESPONSIBLEITY—晚上去上英语课Qؓ(f)了好开溜坐C最后一排,哇,前面坐了好几个漂亮的MM哎,扑ּU条Q写上“Hi,可以做我的女朋友吗?如果不愿意请向前传”,U条׃个接一个的传上MQ糟p,传到W一排的MM把纸条传l老师了,听说是个老处奛_Q快?
责Q链模式:(x)在责任链模式中,很多对象由每一个对象对其下家的引用而接
h形成一条链。请求在q个链上传递,直到链上的某一个对象决定处理此h。客户ƈ不知道链上的哪一个对象最l处理这个请求,pȝ可以在不影响客户端的情况下动态的重新l织铑֒分配责Q。处理者有两个选择Q承担责L者把责Q推给下家。一个请求可以最l不被Q何接收端对象所接受?
14、COMMAND—俺有一个MM安得特别严,没法见面Q只好借助于她弟弟在我们俩之间传送信息,她对我有什么指C,写一张纸条让她弟弟带l我。这不,她弟弟又传送过来一个COMMANDQؓ(f)了感谢他Q我请他吃了杂酱面Q哪知道他说Q“我同时l我姐姐三个h友送COMMANDQ就C最气Q才h吃面。”,
命o(h)模式Q命令模式把一个请求或者操作封装到一个对象中。命令模式把发出命o(h)的责d执行命o(h)的责d割开Q委z不同的对象。命令模式允许请求的一方和发送的一方独立开来,使得h的一方不必知道接收请求的一方的接口Q更不必知道h是怎么被接Ӟ以及(qing)操作是否执行Q何时被执行以及(qing)是怎么被执行的。系l支持命令的撤消?
15、INTERPRETER—俺有一个《MM真经》,上面有各UMM的攻略,比如说去吃西的步骤、去看电(sh)qҎ(gu){等Q跟MMU会(x)Ӟ只要做一个InterpreterQ照着上面的脚本执行就可以了?
解释器模式:(x)l定一个语a后,解释器模式可以定义出其文法的一U表C,q同时提供一个解释器。客L(fng)可以使用q个解释器来解释q个语言中的句子。解释器模式描q怎样在有了一个简单的文法后,使用模式设计解释q些语句。在解释器模式里面提到的语言是指M解释器对象能够解释的Ml合。在解释器模式中需要定义一个代表文法的命o(h)cȝ{l构Q也是一pd的组合规则。每一个命令对象都有一个解释方法,代表对命令对象的解释。命令对象的{l构中的对象的Q何排列组合都是一个语a?
16、ITERATOR—我׃了MaryQ不一切的向她求婚?
MaryQ“想要我跟你l婚Q得{应我的条g?
我:(x)“什么条件我都答应,你说吧?
MaryQ“我看上了那个一克拉的钻石?
我:(x)“我乎ͼ我买Q还有吗Q?
MaryQ“我看上了湖边的那栋别墅?
我:(x)“我乎ͼ我买Q还有吗Q?
MaryQ“我看上那辆法拉利跑车?
我脑袋嗡的一壎ͼ坐在椅子上,一咬牙Q“我乎ͼ我买Q还有吗Q?
…?
q代子模式:(x)q代子模式可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。多个对象聚在一起Ş成的MUC集,聚集对象是能够包容一l对象的容器对象。P代子模式P代逻辑装C个独立的子对象中Q从而与聚集本n隔开。P代子模式化了聚集的界面。每一个聚集对象都可以有一个或一个以上的q代子对象,每一个P代子的P代状态可以是彼此独立的。P代算法可以独立于聚集角色变化?
17、MEDIATOR—四个MM打麻,怺之间谁应该给谁多钱不清楚了,q怺当时我在旁边Q按照各自的{码数算钱,赚了q从我q里拿,赔了q也付l我Q一切就O(jin)K啦,俺得C四个MM的电(sh)话?
调停者模式:(x)调停者模式包装了一pd对象怺作用的方式,使得q些对象不必怺明显作用。从而他们可以松散偶合。当某些对象之间的作用发生改变时Q不?x)立卛_(jing)响其他的一些对象之间的作用。保证这些作用可以彼此独立的变化。调停者模式将多对多的怺作用转化Z对多的相互作用。调停者模式将对象的行为和协作抽象化,把对象在尺度的行ؓ(f)上与其他对象的相互作用分开处理?
18、MEMENTO—同时跟几个MM聊天Ӟ一定要记清楚刚才跟MM说了些什么话Q不然MM发现了会(x)不高兴的哦,q怺我有个备忘录Q刚才与哪个MM说了什么话我都拯一份放到备忘录里面保存Q这样可以随时察看以前的记录啦?
备忘录模式:(x)备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏装的条件下Q将一个对象的状态捉住,q外部化Q存储v来,从而可以在来合适的时候把q个对象q原到存储v来的状态?
19、OBSERVER—想知道׃公司最新MM情报吗?加入公司的MM情报邮gl就行了Qtom负责搜集情报Q他发现的新情报不用一个一个通知我们Q直接发布给邮gl,我们作ؓ(f)订阅者(观察者)(j)可以及(qing)时收到情报啦
观察者模式:(x)观察者模式定义了一U一队多的依赖关p,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化Ӟ?x)通知所有观察者对象,使他们能够自动更新自己?
20、STATE—跟MM交往Ӟ一定要注意她的状态哦Q在不同的状态时她的行ؓ(f)?x)有不同Q比如你U她今天晚上ȝ?sh)?jing)Q对你没兴趣的MM׃(x)说“有事情啦”,对你不讨厌但q没喜欢上的MM׃(x)说“好啊,不过可以带上我同事么Q”,已经喜欢上你的MM׃(x)说“几炚wQ看完电(sh)影再L吧怎么P”,当然你看?sh)?jing)q程中表现良好的话,也可以把MM的状态从不讨厌不喜欢变成喜欢哦?
状态模式:(x)状态模式允怸个对象在其内部状态改变的时候改变行为。这个对象看上去象是改变了它的类一栗状态模式把所研究的对象的行ؓ(f)包装在不同的状态对象里Q每一个状态对象都属于一个抽象状态类的一个子cR状态模式的意图是让一个对象在其内部状态改变的时候,其行Z随之改变。状态模式需要对每一个系l可能取得的状态创立一个状态类的子cR当pȝ的状态变化时Q系l便改变所选的子类?
21、STRATEGY—跟不同cd的MMU会(x)Q要用不同的{略Q有的请?sh)?jing)比较好,有的则去吃小吃效果不错,有的LvҎ(gu)漫最合适,单目的都是ؓ(f)了得到MM的芳心,我的qMM锦囊中有好多Strategy哦?
{略模式Q策略模式针对一l算法,每一个算法封装到h共同接口的独立的cMQ从而得它们可以相互替换。策略模式得算法可以在不媄(jing)响到客户端的情况下发生变化。策略模式把行ؓ(f)和环境分开。环境类负责l持和查询行为类Q各U算法在具体的策略类中提供。由于算法和环境独立开来,法的增减,修改都不?x)?jing)响到环境和客L(fng)?
22、TEMPLATE METHOD——看q《如何说服女生上床》这部经典文章吗Q女生从认识C床的不变的步骤分为y遇、打破僵局、展开q求、接吅R前戏、动手、爱抚、进d大步?Template method)Q但每个步骤针对不同的情况,都有不一L(fng)做法Q这p看你随机应变?具体实现)Q?
模板Ҏ(gu)模式Q模板方法模式准备一个抽象类Q将部分逻辑以具体方法以?qing)具体构造子的Ş式实玎ͼ然后声明一些抽象方法来q子类实现剩余的逻辑。不同的子类可以以不同的方式实现q些抽象Ҏ(gu)Q从而对剩余的逻辑有不同的实现。先制定一个顶U逻辑框架Q而将逻辑的细节留l具体的子类d现?
23、VISITOR—情CQ要l每个MM送一束鲜花和一张卡片,可是每个MM送的花都要针对她个h的特点,每张卡片也要Ҏ(gu)个h的特Ҏ(gu)挑,我一个h哪搞得清楚,q是找花店老板和礼品店老板做一下VisitorQ让花店老板Ҏ(gu)MM的特炚w一束花Q让C品店老板也根据每个h特点选一张卡Q这样就L多了Q?
讉K者模式:(x)讉K者模式的目的是封装一些施加于某种数据l构元素之上的操作。一旦这些操作需要修改的话,接受q个操作的数据结构可以保持不变。访问者模式适用于数据结构相Ҏ(gu)定的pȝQ它把数据结构和作用于结构上的操作之间的耦合解脱开Q得操作集合可以相对自q演化。访问者模式得增加新的操作变的很Ҏ(gu)Q就是增加一个新的访问者类。访问者模式将有关的行为集中到一个访问者对象中Q而不是分散到一个个的节点类中。当使用讉K者模式时Q要尽可能多的对象览逻辑攑֜讉K者类中,而不是放到它的子cM。访问者模式可以跨q几个类的等U结构访问属于不同的{l构的成员类?img src ="http://m.tkk7.com/balajinima/aggbug/266988.html" width = "1" height = "1" />
]]>
protected static String one;
protected static String two;
}
class Son1 extends Father
{
public Son1()
{
one="son1";
}
}
class Son2 extends Father
{
public Son2()
{
one="son2";
}
}
class Factory
{
public Father getSon(String s)
{
if(s.equals("1"))
{
return new Son1();
}
else
{
return new Son2();
}
}
//main
public static void main(String [] args)
{
Factory factory=new Factory();
Father father=factory.getSon("2");
//print
System.out.println(father.one);
System.out.println(father.two);
}
}
创徏型模?
public class MyParam {
private MyParam() {
}
private static Map usrParamMap = new HashMap();
private static MyParam instance = new MyParam();
public static MyParam getInstance() {
return instance;
}
public String getParam(String usrId) {
return usrParamMap.get(usrId).toString();
}
public void putParam(String usrId, String param) {
usrParamMap.put(usrId, param);
}
}
关于23U设计模式的有趣见解 1、FACTORY—追MM不了请吃饭了,麦当劳的鸡翅和肯德基的鸡都是MM爱吃的东西,虽然口味有所不同Q但不管你带MM去麦当劳或肯德基Q只向服务员说“来四个鸡翅”就行了。麦当劳和肯德基是生鸡翅的Factory 工厂模式Q客L(fng)和工厂类分开。消费者Q何时候需要某U品,只需向工厂请求即可。消费者无M改就可以接纳C品。缺Ҏ(gu)当品修Ҏ(gu)Q工厂类也要做相应的修改。如Q如何创建及(qing)如何向客L(fng)提供? 2、BUILDER—MM最爱听的就是“我׃”这句话了,见到不同地方的MM,要能够用她们的方a跟她说这句话哦,我有一个多U语a译机,上面每种语言都有一个按键,见到MM我只要按对应的键Q它?yu)p够用相应的语a说出“我׃”这句话了,国外的MM也可以轻松搞掂,q就是我的“我׃”builder。(q一定比军在伊拉克用的译机好卖)(j) 建造模式:(x)品的内部表象和品的生成q程分割开来,从而一个徏造过E生成具有不同的内部表象的品对象。徏造模式得品内部表象可以独立的变化Q客户不必知道品内部组成的l节。徏造模式可以强制实行一U分步骤q行的徏造过E? 3、FACTORY METHOD—请MM去麦当劳吃汉堡,不同的MM有不同的口味Q要每个都记住是一件烦(ch)人的事情Q我一般采用Factory Method模式Q带着MM到服务员那儿Q说“要一个汉堡”,具体要什么样的汉堡呢Q让MM直接跟服务员说就行了? 工厂Ҏ(gu)模式Q核心工厂类不再负责所有品的创徏Q而是具体创建的工作交给子类dQ成Z个抽象工厂角Ԍ仅负责给出具体工厂类必须实现的接口,而不接触哪一个品类应当被实例化q种l节? 4、PROTOtype—跟MM用QQ聊天Q一定要说些深情的话语了Q我搜集了好多肉ȝ情话Q需要时只要copy出来攑ֈQQ里面p了,q就是我的情话prototype了。(100块钱一份,你要不要Q? 原始模型模式Q通过l出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的Ҏ(gu)创徏出更多同cd的对象。原始模型模式允许动态的增加或减品类Q品类不需要非得有M事先定的等U结构,原始模型模式适用于Q何的{l构。缺Ҏ(gu)每一个类都必配备一个克隆方法? 5、SINGLETON—俺?个漂亮的老婆Q她们的老公都是我,我就是我们家里的老公SigletonQ她们只要说道“老公”,都是指的同一个hQ那是?刚才做了个梦啦,哪有q么好的? 单例模式Q单例模式确保某一个类只有一个实例,而且自行实例化ƈ向整个系l提供这个实例单例模式。单例模式只应在有真正的“单一实例”的需求时才可使用? l构型模? 6、ADAPTER—在朋友聚会(x)上碰C一个美女SArahQ从香港来的Q可我不?x)说_语Q她不会(x)说普通话Q只好求助于我的朋友kent了,他作为我和Sarah之间的AdapterQ让我和Sarah可以怺交谈?也不知道他会(x)不会(x)耍我) 适配器(变压器)(j)模式Q把一个类的接口变换成客户端所期待的另一U接口,从而原本因接口原因不匚w而无法一起工作的两个c能够一起工作。适配cd以根据参数返q一个合适的实例l客L(fng)? 7、BRIDGE—早上碰到MMQ要说早上好Q晚上碰到MMQ要说晚上好Q碰到MMI了件新衣服Q要说你的衣服好漂亮哦,到MM新做的发型,要说你的头发好漂亮哦。不要问我“早上碰到MM新做了个发型怎么说”这U问题,自己用BRIDGEl合一下不p? 桥梁模式Q将抽象化与实现化脱耦,使得二者可以独立的变化Q也是说将他们之间的强兌变成弱关联,也就是指在一个Y件系l的抽象化和实现化之间用组?聚合关系而不是承关p,从而两者可以独立的变化? 8、COMPOSITE—Mary今天q生日。“我q生日,你要送我一件礼物。”“嗯Q好吧,d店,你自己挑。”“这件T恤挺漂亮Q买Q这条裙子好看,乎ͼq个包也不错Q买。”“喂Q买了三件了呀Q我只答应送一件礼物的哦。”“什么呀QT恤加裙子加包包,正好配成一套呀Q小姐,ȝ(ch)你包h。”“……”,MM都会(x)用Composite模式了,你会(x)了没有? 合成模式Q合成模式将对象l织到树(wi)l构中,可以用来描述整体与部分的关系。合成模式就是一个处理对象的?wi)结构的模式。合成模式把部分与整体的关系用树(wi)l构表示出来。合成模式得客L(fng)把一个个单独的成分对象和׃们复合而成的合成对象同{看待? 9、DECORATOR—Maryq完轮到Sarlyq生日,q是不要叫她自己挑了Q不然这个月伙食费肯定玩完,拿出我去q在华山上照的照片Q在背面写上“最好的的礼物,是׃的Fita”,再到街上C品店买了个像框Q卖C品的MM也很漂亮哦)(j)Q再N壁搞术设计的Mike设计了一个漂亮的盒子装v来……,我们都是DecoratorQ最l都在修饰我q个人呀Q怎么P看懂了吗Q? 装饰模式Q装饰模式以对客L(fng)透明的方式扩展对象的功能Q是l承关系的一个替代方案,提供比承更多的灉|性。动态给一个对象增加功能,q些功能可以再动态的撤消。增加由一些基本功能的排列l合而生的非常大量的功能?
门面模式Q外部与一个子pȝ的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系l更易于使用。每一个子pȝ只有一个门面类Q而且此门面类只有一个实例,也就是说它是一个单例模式。但整个pȝ可以有多个门面类? 11、FLYWEIGHT—每天跟MM发短信,手指都篏MQ最q买了个新手机,可以把一些常用的句子存在手机里,要用的时候,直接拿出来,在前面加上MM的名字就可以发送了Q再不用一个字一个字敲了。共享的句子是FlyweightQMM的名字就是提取出来的外部特征Q根据上下文情况使用? 享元模式QFLYWEIGHT在拳?yn)L赛中指最轻量U。n元模式以׃n的方式高效的支持大量的细_度对象。n元模式能做到׃n的关键是区分内蕴状态和外蕴状态。内蕴状态存储在享元内部Q不?x)随环境的改变而有所不同。外蕴状态是随环境的改变而改变的。外蕴状态不能媄(jing)响内蕴状态,它们是相互独立的。将可以׃n的状态和不可以共享的状态从常规cM区分开来,不可以׃n的状态从c里剔除出去。客L(fng)不可以直接创׃n的对象,而应当用一个工厂对象负责创׃n的对象。n元模式大q度的降低内存中对象的数量? 12、PROXY—跟MM在网上聊天,一开头L“hi,你好?“你从哪儿来呀Q”“你多大了?”“n高多呀Q”这些话Q真?ch)hQ写个程序做为我的Proxy吧,凡是接收到这些话都设|好了自动的回答Q接收到其他的话时再通知我回{,怎么P酷吧? 代理模式Q代理模式给某一个对象提供一个代理对象,q由代理对象控制Ҏ(gu)对象的引用。代理就是一个h或一个机构代表另一个h或者一个机构采取行动。某些情况下Q客户不x者不能够直接引用一个对象,代理对象可以在客户和目标对象直接起到中介的作用。客L(fng)分L不出代理主题对象与真实主题对象。代理模式可以ƈ不知道真正的被代理对象,而仅仅持有一个被代理对象的接口,q时候代理对象不能够创徏被代理对象,被代理对象必Lpȝ的其他角色代为创建ƈ传入? 行ؓ(f)模式 13、CHAIN OF RESPONSIBLEITY—晚上去上英语课Qؓ(f)了好开溜坐C最后一排,哇,前面坐了好几个漂亮的MM哎,扑ּU条Q写上“Hi,可以做我的女朋友吗?如果不愿意请向前传”,U条׃个接一个的传上MQ糟p,传到W一排的MM把纸条传l老师了,听说是个老处奛_Q快? 责Q链模式:(x)在责任链模式中,很多对象由每一个对象对其下家的引用而接 h形成一条链。请求在q个链上传递,直到链上的某一个对象决定处理此h。客户ƈ不知道链上的哪一个对象最l处理这个请求,pȝ可以在不影响客户端的情况下动态的重新l织铑֒分配责Q。处理者有两个选择Q承担责L者把责Q推给下家。一个请求可以最l不被Q何接收端对象所接受? 14、COMMAND—俺有一个MM安得特别严,没法见面Q只好借助于她弟弟在我们俩之间传送信息,她对我有什么指C,写一张纸条让她弟弟带l我。这不,她弟弟又传送过来一个COMMANDQؓ(f)了感谢他Q我请他吃了杂酱面Q哪知道他说Q“我同时l我姐姐三个h友送COMMANDQ就C最气Q才h吃面。”,:-( 命o(h)模式Q命令模式把一个请求或者操作封装到一个对象中。命令模式把发出命o(h)的责d执行命o(h)的责d割开Q委z不同的对象。命令模式允许请求的一方和发送的一方独立开来,使得h的一方不必知道接收请求的一方的接口Q更不必知道h是怎么被接Ӟ以及(qing)操作是否执行Q何时被执行以及(qing)是怎么被执行的。系l支持命令的撤消? 15、INTERPRETER—俺有一个《MM真经》,上面有各UMM的攻略,比如说去吃西的步骤、去看电(sh)qҎ(gu){等Q跟MMU会(x)Ӟ只要做一个InterpreterQ照着上面的脚本执行就可以了? 解释器模式:(x)l定一个语a后,解释器模式可以定义出其文法的一U表C,q同时提供一个解释器。客L(fng)可以使用q个解释器来解释q个语言中的句子。解释器模式描q怎样在有了一个简单的文法后,使用模式设计解释q些语句。在解释器模式里面提到的语言是指M解释器对象能够解释的Ml合。在解释器模式中需要定义一个代表文法的命o(h)cȝ{l构Q也是一pd的组合规则。每一个命令对象都有一个解释方法,代表对命令对象的解释。命令对象的{l构中的对象的Q何排列组合都是一个语a?
16、ITERATOR—我׃了MaryQ不一切的向她求婚? MaryQ“想要我跟你l婚Q得{应我的条g? 我:(x)“什么条件我都答应,你说吧? MaryQ“我看上了那个一克拉的钻石? 我:(x)“我乎ͼ我买Q还有吗Q? MaryQ“我看上了湖边的那栋别墅? 我:(x)“我乎ͼ我买Q还有吗Q? MaryQ“你的小弟弟必须要有50CM镎? 我脑袋嗡的一壎ͼ坐在椅子上,一咬牙Q“我剪,我剪Q还有吗Q? …? q代子模式:(x)q代子模式可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。多个对象聚在一起Ş成的MUC集,聚集对象是能够包容一l对象的容器对象。P代子模式P代逻辑装C个独立的子对象中Q从而与聚集本n隔开。P代子模式化了聚集的界面。每一个聚集对象都可以有一个或一个以上的q代子对象,每一个P代子的P代状态可以是彼此独立的。P代算法可以独立于聚集角色变化? 17、MEDIATOR—四个MM打麻,怺之间谁应该给谁多钱不清楚了,q怺当时我在旁边Q按照各自的{码数算钱,赚了q从我q里拿,赔了q也付l我Q一切就O(jin)K啦,俺得C四个MM的电(sh)话? 调停者模式:(x)调停者模式包装了一pd对象怺作用的方式,使得q些对象不必怺明显作用。从而他们可以松散偶合。当某些对象之间的作用发生改变时Q不?x)立卛_(jing)响其他的一些对象之间的作用。保证这些作用可以彼此独立的变化。调停者模式将多对多的怺作用转化Z对多的相互作用。调停者模式将对象的行为和协作抽象化,把对象在尺度的行ؓ(f)上与其他对象的相互作用分开处理? 18、MEMENTO—同时跟几个MM聊天Ӟ一定要记清楚刚才跟MM说了些什么话Q不然MM发现了会(x)不高兴的哦,q怺我有个备忘录Q刚才与哪个MM说了什么话我都拯一份放到备忘录里面保存Q这样可以随时察看以前的记录啦? 备忘录模式:(x)备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏装的条件下Q将一个对象的状态捉住,q外部化Q存储v来,从而可以在来合适的时候把q个对象q原到存储v来的状态? 19、OBSERVER—想知道׃公司最新MM情报吗?加入公司的MM情报邮gl就行了Qtom负责搜集情报Q他发现的新情报不用一个一个通知我们Q直接发布给邮gl,我们作ؓ(f)订阅者(观察者)(j)可以及(qing)时收到情报啦 观察者模式:(x)观察者模式定义了一U一队多的依赖关p,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化Ӟ?x)通知所有观察者对象,使他们能够自动更新自己? 20、STATE—跟MM交往Ӟ一定要注意她的状态哦Q在不同的状态时她的行ؓ(f)?x)有不同Q比如你U她今天晚上ȝ?sh)?jing)Q对你没兴趣的MM׃(x)说“有事情啦”,对你不讨厌但q没喜欢上的MM׃(x)说“好啊,不过可以带上我同事么Q”,已经喜欢上你的MM׃(x)说“几炚wQ看完电(sh)影再L吧怎么P”,当然你看?sh)?jing)q程中表现良好的话,也可以把MM的状态从不讨厌不喜欢变成喜欢哦? 状态模式:(x)状态模式允怸个对象在其内部状态改变的时候改变行为。这个对象看上去象是改变了它的类一栗状态模式把所研究的对象的行ؓ(f)包装在不同的状态对象里Q每一个状态对象都属于一个抽象状态类的一个子cR状态模式的意图是让一个对象在其内部状态改变的时候,其行Z随之改变。状态模式需要对每一个系l可能取得的状态创立一个状态类的子cR当pȝ的状态变化时Q系l便改变所选的子类? {略模式Q策略模式针对一l算法,每一个算法封装到h共同接口的独立的cMQ从而得它们可以相互替换。策略模式得算法可以在不媄(jing)响到客户端的情况下发生变化。策略模式把行ؓ(f)和环境分开。环境类负责l持和查询行为类Q各U算法在具体的策略类中提供。由于算法和环境独立开来,法的增减,修改都不?x)?jing)响到环境和客L(fng)? 22、TEMPLATE METHOD——看q《如何说服女生上床》这部经典文章吗Q女生从认识C床的不变的步骤分为y遇、打破僵局、展开q求、接吅R前戏、动手、爱抚、进d大步?Template method)Q但每个步骤针对不同的情况,都有不一L(fng)做法Q这p看你随机应变?具体实现)Q? 模板Ҏ(gu)模式Q模板方法模式准备一个抽象类Q将部分逻辑以具体方法以?qing)具体构造子的Ş式实玎ͼ然后声明一些抽象方法来q子类实现剩余的逻辑。不同的子类可以以不同的方式实现q些抽象Ҏ(gu)Q从而对剩余的逻辑有不同的实现。先制定一个顶U逻辑框架Q而将逻辑的细节留l具体的子类d现? 23、VISITOR—情CQ要l每个MM送一束鲜花和一张卡片,可是每个MM送的花都要针对她个h的特点,每张卡片也要Ҏ(gu)个h的特Ҏ(gu)挑,我一个h哪搞得清楚,q是找花店老板和礼品店老板做一下VisitorQ让花店老板Ҏ(gu)MM的特炚w一束花Q让C品店老板也根据每个h特点选一张卡Q这样就L多了Q? 讉K者模式:(x)讉K者模式的目的是封装一些施加于某种数据l构元素之上的操作。一旦这些操作需要修改的话,接受q个操作的数据结构可以保持不变。访问者模式适用于数据结构相Ҏ(gu)定的pȝQ它把数据结构和作用于结构上的操作之间的耦合解脱开Q得操作集合可以相对自q演化。访问者模式得增加新的操作变的很Ҏ(gu)Q就是增加一个新的访问者类。访问者模式将有关的行为集中到一个访问者对象中Q而不是分散到一个个的节点类中。当使用讉K者模式时Q要尽可能多的对象览逻辑攑֜讉K者类中,而不是放到它的子cM。访问者模式可以跨q几个类的等U结构访问属于不同的{l构的成员类?br /> |