
PatternsInJava
文章平均质量分 77
iteye_7030
这个作者很懒,什么都没留下…
展开
-
Design Pattern: Visitor 模式
在Java中所有的物件都继承自Object物件,这样作的优点之一,就是使得一些集合物件的资料结构容易管理,例如您可以将任何型态的物件放入Vector中。然而现在有个问题是,如果您的集合(connection)物件中不仅储存一种型态的物件,如果想要对这些物件作出一些个别化的操作,首要条件就是要知道该物件的型态,使用 instanceof 似乎是个不错的方式,在程式简单的情况下,也许您会这么作:...原创 2010-11-10 21:07:18 · 310 阅读 · 0 评论 -
Design Pattern: Command 模式
Command定义n 将来自客户端的请求传入一个对象,无需了解这个请求激活的 动作或有关接受这个请求的处理细节。这是一种两台机器之间通讯联系性质的模式,类似传统过程语 言的 CallBack功能。 优点:解耦了发送者和接受者之间联系。 发送者调用一个操作,接受者接受请求执行相应的动作,因为使用Command模式解耦,发送者无需知道接受者任何接口。不少Command模式的代码都是针对图形...原创 2010-11-10 23:08:14 · 67 阅读 · 0 评论 -
Design Pattern: Interpreter 模式
对于一个具有层次节点关系的问题来说,如果您要剖析每一个节点,您可以使用Interpreter模式,直译器模式有些类似演算法中的个别击破方式,对每一个父节点我们剖析出其子节点组合,然而交给子节点剖析物件继续剖析,直到剖析至终端节点为止。举个例子来说明好了,先说明的是,这个例子是改写自 Design Patterns于Java语言之实习应用 第23章的范例,我将之更简化了,以让大家将焦点能集中在如何使...原创 2010-11-10 23:17:42 · 127 阅读 · 0 评论 -
Design Pattern: Iterator 模式
这个模式已经被整合入Java的Collection.在大多数场合下无需自己制造一个Iterator,只要将对象装入Collection中,直接使用Iterator进行对象遍历原创 2010-11-10 23:22:17 · 87 阅读 · 0 评论 -
Design Pattern: Observer 模式
Java深入到一定程度,就不可避免的碰到设计模式(design pattern)这一概念,了解设计模式,将使自己对java中的接口或抽象类应用有更深的理解.设计模式在java的中型系统中应用广泛,遵循一定的编程模式,才能使自己的代码便于理解,易于交流,Observer(观察者)模式是比较常用的一个模式,尤其在界面设计中应用广泛,而本站所关注的是Java在电子商务系统中应用,因此想从电子商务实例中分...原创 2010-11-10 23:33:52 · 144 阅读 · 0 评论 -
Design Pattern: Guarded Suspension 模式
考虑这么一个伺服器,它可以处理来自多个客户端的服务请求(Request),为了不丢失客户的请求,它要维持一个缓冲区,客户的请求会先储存至缓冲区中,而伺服器会从缓冲区中取出请求并执行,如果缓冲区中没有请求,则伺服器就等待,直到被通知有新的请求存入缓冲区中,伺服器再度进行请求的执行。关于这个描述的一个简单 UML 顺序图如下所示:首先要考虑到,缓冲区会同时被两个以上的执行绪进行存取,即伺服器的请求...原创 2010-11-10 23:48:01 · 145 阅读 · 0 评论 -
Design Pattern: Producer Consumer 模式
Producer Consumer模式与 Guarded Suspension 模式 是类似的,只不过Guarded Suspension模式并不限制缓冲区的长度,Producer Consumer模式假设所生产的产品放置在一个长度有限制的缓冲区(就像是一个产品桌,它可以摆放的空间是有限的),如果缓冲区满了,则生产者必须停止继续将产品放到缓冲区中,直到消费者取走了产品而有了空间,而如果缓冲区中没有...原创 2010-11-10 23:52:00 · 112 阅读 · 0 评论 -
Design Pattern: Read-Write-Lock 模式
如果有一个资料档有可能同时间会有许多客户端对它进行读取与写入的动作,则必须注意资料的同步问题,像是两个写入者进行写入时,后一个写入者的资料会有可能将次一个写入者的资料覆盖掉;而有时您希望读取者看到的是最新的资料,如果在读取的时候,有写入者想要对资料进行写入,则最好等待读取者读取完毕,相反的如果在写入时有客户想要读取资料,则最好等待,以确保读出来的资料是最新的资料。读取写入的同步问题向来是难解的问题...原创 2010-11-10 23:58:18 · 106 阅读 · 0 评论 -
Design Pattern: State 模式
如果您不了解TCP的连线方式,在看 Gof 的书介绍State模式时,大概会看得一头雾水吧!TCP的连线状态图,光是要了解就要花点精神了,它的连线状态很多,用来说明状态模式确实很适合,但不适合教导初学模式的人。 由简单的开始会比较好理解状态模式的作用,先来看一个例子,如果您有一个只能顺时针转动的瓦斯开关,转动一次的状态为off、 small fire、medium fire与large fire,...原创 2010-11-13 23:22:49 · 80 阅读 · 0 评论 -
Design Pattern: Strategy 模式
考虑您要设计一个更换各种符号的工具类TextCharChange,您是否会采用这样的方式:public void replace() { switch(getChangeType()) { case RN_TYPE: replaceRN(); break; case N_TYPE: replaceN(); ...原创 2010-11-13 23:25:06 · 89 阅读 · 0 评论 -
Design Pattern: Command 模式
如果您写过Java的Swing视窗程式,您可能使用过Command模式了,例如在您按下JMenuItem的“剪下”选项时,执行对JTextArea的选定文字之剪下动作,并将状态列设定为文件已修改状态。在设计Swing时,设计人员是不可能知道使用Swing类别的人,在某个事件发生后所要执行的动作是什么的,他们采用了Command模式,以上面的需求作为例子,一个实作的片段可能像是这个样子:men...原创 2010-11-13 23:30:16 · 90 阅读 · 0 评论 -
Design Pattern: Mediator 模式
Mediator的意思是中介者、调节者、传递物,顾名思义,这个模式在程式中必然负担一个中介、调节、传递的工作。物件导向设计中,每个物件所负担的工作尽可能的简单明了,鼓励物件将工作分布至其它物件上,让一群工作属性相同的物件得以共同合作,即所谓高聚合性,以增加物件的可重用性。然而在组织物件工作的同时,物件彼此之间可能知道彼此的存在,并相互依赖,这就使得物件之间的耦合性相对的提高,最差的情况下,所有的物...原创 2010-11-13 23:31:30 · 77 阅读 · 0 评论 -
Design Pattern: Chain of Responsibility 模式
其实Chain of Responsibility的概念,即使是一个刚学程式设计的新手也会用到,一个简单的 if...else if ... else 流程控制就有Chain of Responsibility的概念:if(/* 符合请求条件一 */) // 执行请求一 else if(/* 符合请求条件二 */) // 执行请求二 else // 执行预设请求或显示...原创 2010-11-10 23:00:56 · 109 阅读 · 0 评论 -
Design Pattern: Proxy 模式
来看看实现代理的两种方式:Static Proxy与Dynamic Proxy。严格来说这是属于模式的实现方式,不过藉由实例可以更了解Proxy模式的应用。先来看个例子,这个例子是记录(log)动作,程式中很常需要为某些动作或事件作下记录,以便在事后检视或是作为除错时的资讯,一个最简单的例子如下:HelloSpeaker.java import java.util.logging.*;...原创 2010-11-10 22:51:22 · 88 阅读 · 0 评论 -
Design Pattern: Flyweight 模式
Flyweight(享元)模式定义:避免大量拥有相同内容的小类的开销(如耗费内存),使大家共享一个类(元类).为什么使用?面向对象语言的原则就是一切都是对象,但是如果真正使用起来,有时对象数可能显得很庞大,比如,字处理软件,如果以每个文字都作为一个对象,几千个字,对象数就是几千,无疑耗费内存,那么我们还是要"求同存异",找出这些对象群的共同点,设计一个元类,封装可以被共享的类,另外,还有一些特...原创 2010-11-10 22:48:47 · 106 阅读 · 0 评论 -
Design Pattern: Simple Factory 模式
Simple Factory模式(又称Static Factory模式),一个Simple Factory生产成品,而对客户端隐藏产品产生的细节。实作时定义一个产品介面(interface),并透过特定静态方法来建立成品。假设有一个音乐盒工厂,购买音乐盒的客人不用知道音乐盒是如何制作的,他只要知道如何播放音乐盒就可以了,以 UML 类别图来表示以上的概念:MusicBoxDemo代表了客户的角...原创 2010-11-10 21:12:36 · 119 阅读 · 0 评论 -
Design Pattern: Abstract Factory 模式
假设您要制作一个对话方块(Dialog)元件,您希望的是这个对话方块可以有不同的视感(Look-and- feel),最基本的想法是,藉由Setter将不同视感的元件设定给这个对话方块,例如:CustomDialog.java public class CustomDialog { private IButton button; private ITextField...原创 2010-11-10 21:14:56 · 73 阅读 · 0 评论 -
Design Pattern: Builder 模式
Builder模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们.用户不知道内部的具体构建细节.Builder模式是非常类似抽象工厂模式,细微的区别大概只有在反复使用中才能体会到.为何使用?是为了将构建复杂对象的过程和它的部件解耦.注意: 是解耦过程和...原创 2010-11-10 21:19:08 · 77 阅读 · 0 评论 -
Design Pattern: Factory Method 模式
考虑一个状况,您所经营的工厂正在生产一个新的电视机产品,现在有一个问题发生了,您的电视机产品所有的组件都可以自行生产,像是操作面版、电源、摇控装置等等等,但荧幕却必须依赖另一个厂商或子厂商供应,这时您怎么办?您不能将生产进度停下了,相反的您必须确定一些事情,您知道有关于荧幕控制的所有介面,您可以将这些对介面的操作沟通先实现,等到荧幕到了,直接将荧幕与您的半成品组合起来,一个完整的成品即可出厂。Fa...原创 2010-11-10 21:30:00 · 75 阅读 · 0 评论 -
Design Pattern: Prototype 模式
您从图书馆的期刊从发现了几篇您感兴趣的文章,由于这是图书馆的书,您不可以直接在书中作记号或写字,所以您将当中您所感兴趣的几个主题影印出来,这下子您就可在影印的文章上画记重点。Prototype模式的作用有些类似上面的描述,您在父类别中定义一个clone()方法,而在子类别中重新定义它,当客户端对于所产生的物件有兴趣并想加以利用,而您又不想破坏原来的物件,您可以产生一个物件的复本给它。Prototy...原创 2010-11-10 22:04:46 · 93 阅读 · 0 评论 -
Design Pattern: Singleton 模式
Singleton的英文意义是独身,也就是只有一个人,应用在物件导向语言上,通常翻译作单例:单一个实例(Instance)。很多时候,您会需要Singleton模式,例如印表机管理,您希望程式中只能有一个Print Spooler,以避免两个列印动作同时输入至印表机中;例如资料库管理,因为建立连接(Connection)物件会耗用资源,您希望程式中只能有一个连接物件,所有其它的程式都透过这个物件来...原创 2010-11-10 22:06:45 · 69 阅读 · 0 评论 -
Design Pattern: Default Adapter 模式
在Java中如果要定义事件处理的方式,必须实作EventListener的子介面,例如实作 WindowListener来定义一些视窗事件的处理方式,WindowListener中定义了七个方法:public interface WindowListener extends EventListener { public void windowOpened(WindowEvent e)...原创 2010-11-10 22:07:39 · 117 阅读 · 0 评论 -
Design Pattern: Default Adapter 模式(二)
适配器模式定义:将两个不兼容的类纠合在一起使用,属于结构型模式,需要有Adaptee(被适配者)和Adaptor(适配器)两个身份.为何使用?我们经常碰到要将两个没有关系的类组合在一起使用,第一解决方案是:修改各自类的接口,但是如果我们没有源代码,或者,我们不愿意为了一个应用而修改各自的接口。 怎么办? 使用Adapter,在这两种接口之间创建一个混合接口(混血儿).如何使用?实现Ad...原创 2010-11-10 22:16:43 · 112 阅读 · 0 评论 -
Design Pattern: Bridge 模式
Bridge模式定义 :将抽象和行为划分开来,各自独立,但能动态的结合。任何事物对象都有抽象和行为之分,例如人,人是一种抽象,人分男人和女人等;人有行为,行为也有各种具体表现,所以,“人”与“人的行为”两个概念也反映了抽象和行为之分。在面向对象设计的基本概念中,对象这个概念实际是由属性和行为两个部分组成的,属性我们可以认为是一种静止的,是一种抽象,一般情况下,行为是包含在一个对象中,但是,...原创 2010-11-10 22:24:41 · 91 阅读 · 0 评论 -
Design Pattern: Decorator 模式
装饰模式:Decorator常被翻译成"装饰",我觉得翻译成"油漆工"更形象点,油漆工(decorator)是用来刷油漆的,那么被刷油漆的对象我们称decoratee.这两种实体在Decorator模式中是必须的.Decorator定义:动态给一个对象添加一些额外的职责,就象在墙上刷油漆.使用Decorator模式相比用生成子类方式达到功能的扩充显得更为灵活.为什么使用Decora...原创 2010-11-10 22:35:10 · 156 阅读 · 0 评论 -
Design Pattern: Facade 模式
Facade模式的定义: 为子系统中的一组接口提供一个一致的界面.比如DDD思想中的facade上就是这样的,调用复杂的service和repository借口facade层实现复杂的业务逻辑接口。Facade一个典型应用就是数据库JDBC的应用,如下例对数据库的操作:public class DBCompare { Connection conn = null; Prepare...原创 2010-11-10 22:42:29 · 102 阅读 · 0 评论 -
Java 事件传送技术
developerWorks 中国Java technology文档库Java 事件传送技术 Paul Monday, 设计师, J.D. EdwardsPaul Monday 是 J.D. Edwards 的设计师。他有六年实际使用 Java 平台的经验,涉及包括 J2EE、Jini 和 Jiro 技术在内的广...原创 2010-12-20 14:16:15 · 157 阅读 · 0 评论