IT职涯

一个多年的IT人的博客
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2012年12月17日

摘要: 将一类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作那些类可以一起工作。适用情况:使用的前提是:接口中规定了所有要实现的方法; 但一个要实现此接口的具体类,只用到了其中的几个方法,而其它的方法都是没有用的。实现方法:用一个抽象类实现已有的接口,并实现接口中所规定的所有方法,这些方法的实现可以都是空方法;原本要实现接口的子类,只实现上面的抽象类即可,并在其内部实现时,只对其感兴趣的方法进行实现;类图:角色:目标接口(Target): 客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。需要适配的类(Adaptee): 需要适配的类或适配者类。适 阅读全文

posted @ 2012-12-17 15:14 IT职涯 阅读(1600) 评论(0) 推荐(0) 编辑

摘要: 装饰模式是在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。装饰模式的特点:1) 装饰对象和真实对象有相同的接口,这样客户端对象就可以和真实对象相同的方式和装饰对象交互。2)装饰对象包含一个真实对象的引用。3)装饰对象接受所有来自客户端的请求,它把这些请求转发给真实的对象。4)装饰对象可以在转发这些请求以前或以后增加一些附加功能。这样就确保了在运行时,不用修改给定对象的结构就可以在外部增加附加的功能。在面向对象的设计中,通常是通过继承来实现对给定类的功能扩展。类图:实例:public abstract class Drink{ 阅读全文

posted @ 2012-12-17 14:06 IT职涯 阅读(1074) 评论(0) 推荐(0) 编辑

2012年12月14日

摘要: 为另一个对象提供一个替身或占位符以控制对这个对象的访问,简而言之就是用一个对象来代表另一个对象。类图:简单例子:有个接口Italk,people对象实现这个接口的talk()方法,有些想另外加入sing()方法,所以增加代理类talkProxy,实现两个方法.public interface ITalk{ public void talk(String msg);}public class People implements ITalk{ @Override public void talk(final String msg) { System.out.println(msg); }}pub. 阅读全文

posted @ 2012-12-14 19:00 IT职涯 阅读(4873) 评论(0) 推荐(0) 编辑

2012年12月13日

摘要: 外观模式也许是我们每天都用到的,下面就稍微解释一下吧。外观模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。他是为子系统中的一组接口所提供的一个一致的界面。它与Adapter和Proxy有类似之处,但是Proxy注重在为Client-Subject提供一个访问的中间层,Adapter注重对接口的转换与调整,而Facade所面对的往往是多个类或其他程序单元,通过重新组合各类及程序单元,对外提供统一的接口/界面。在遇到以下情况使用Facade模式:1. 当你要为一个复杂子系统提供一个简单接口时。2. 客户程序与抽象类的实现部分之间存在着很大的依赖 阅读全文

posted @ 2012-12-13 14:04 IT职涯 阅读(1157) 评论(0) 推荐(0) 编辑

摘要: 组合模式又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解藕.组合模式可以优化处理递归或分级数据结构.有许多关于分级数据结构的例子,使得组合模式非常有用武之地.类图:组成部分:Component: 为参加组合的对象声明一个公共接口, 不管是组合还是叶结点.Leaf: 在组合中表示叶子结点对象,叶子结点没有子结点.Composite: 表示参加组合的有子对象的对象, 并给出树枝购件的行为.实例:public abstract class FolderComponent{ privat 阅读全文

posted @ 2012-12-13 11:57 IT职涯 阅读(3233) 评论(0) 推荐(0) 编辑

2012年12月12日

摘要: 备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,属于行为模式。它是在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。类图:组成部分:发起人(Originator): 负责创建一个备忘录Memento,用以记录当前时刻自身的内部状态,并可使用备忘录恢复内部状态。发起人可以根据需要觉得备忘录存储自己的哪些内部状态。备忘录(Memento): 负责存储发起人对象的内部状态,并可以防止发起人以外的其他对象访问备忘录。备忘录有两个接口:管理者只能看到备忘录的窄接口,他只能将备忘录传递给其他对象。发起人却可以看 阅读全文

posted @ 2012-12-12 16:04 IT职涯 阅读(2180) 评论(0) 推荐(0) 编辑

摘要: 解释器模式定义语言的文法,并且建立一个解释器来解释该语言中的句子。它属于类的行为模式。这里的语言意思是使用规定格式和语法的代码。应用环境:如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。而且当文法简单、效率不是关键问题的时候效果最好。类图:抽象表达式角色(AbstractExpression): 声明一个抽象的解释操作,这个接口为所有具体表达式角色都要实现的.终结符表达式角色(TerminalExpression): 实现与文法中的元素相关联的解释操作,通常一个解释器模式中只有一 阅读全文

posted @ 2012-12-12 12:49 IT职涯 阅读(6056) 评论(0) 推荐(0) 编辑

2012年12月11日

摘要: 访问者模式表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。从定义可以看出结构对象是使用访问者模式的必备条件,而且这个结构对象必须存在遍历自身各个对象的方法,类似于Java中的Collection。访问者模式的目的是要把处理从数据结构中分离出来,如果系统有比较稳定的数据结构,又有易于变化的算法的话,使用访问者模式是个不错的选择,因为访问者模式使的算法操作的增加变得容易。相反,如果系统的数据结构不稳定,易于变化,则此系统就不适合使用访问者模式了。类图:访问者模式结构:访问者角色(Visitor): 为该对象结构中具体元素角色声明一个访问操作接 阅读全文

posted @ 2012-12-11 17:54 IT职涯 阅读(11319) 评论(2) 推荐(0) 编辑

2012年12月6日

摘要: 中介者模式是行为模式之一。定义一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变他们之间的交互。类图:实例:生产者、消费者、代理商public abstract class PersonColleague{ protected Mediator mediator; public Mediator getMediator() { return mediator; } public void setMediator(final Mediator mediator) { this.mediator = mediator; } pro.. 阅读全文

posted @ 2012-12-06 16:29 IT职涯 阅读(1958) 评论(0) 推荐(0) 编辑

2012年12月5日

摘要: 职责链模式是一种对象的行为模式。在职责链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。类图:职责链模式的组成:抽象处理者(Handler)角色:定义出一个处理请求的接口。如果需要,接口可以定义出一个方法,以设定和返回对下家的引用。这个角色通常由一个抽象类或接口实现。具体处理者(ConcreteHandle)角色:具体处理者接到请求后,可以选择将请求处理掉,或者将请求传给下家。由于具体处理者持有对下 阅读全文

posted @ 2012-12-05 17:44 IT职涯 阅读(1511) 评论(0) 推荐(0) 编辑