- 浏览: 96581 次
- 性别:
- 来自: 北京
最新评论
-
longhaojava:
谢谢,文章很好,对我帮助很大,感谢楼主的分享!
设计模式学习笔记(十七)—Memento备忘录模式 -
枫竹雨:
可以把这个例子发给我吗?我近期在学这方面的东西。谢谢。
我的邮 ...
Struts2+spring2+hibernate3整合方案 -
fengzhizi8584:
学习了~~~~
设计模式学习笔记(一)--Facade外观模式 -
lxtkong-029:
谢谢,郁闷了半天了
Struts2中使用Common-FileUpload实现文件上传 -
女巫の微笑:
条理很清晰
Struts2拦截器学习
文章列表
一、 State模式定义:
允许一个对象在其状态改变时,改变它的行为。看起来对象似乎修改了它的类。
二、 模式解说
State模式主要解决的是在开发中时常遇到的根据不同的状态需要进行不同的处理操作的问题,而这样的问题,大部分人是采用switch-case语句进行处理的,这样会造成一个问题:分支过多,而且如果加入一个新的状态就需要对原来的代码进行编译。State模式采用了对这些不同的状态进行封装的方式处理这类问题,当状态改变的时候进行处理然后再切换到另一种状态,也就是说把状态的切换责任交给了具体的状态类去负责.同时,State模式和Strategy模式有很多相似的地方,需要说明的是两者的思想都是一 ...
- 2007-12-05 16:35
- 浏览 1519
- 评论(0)
一、 Command模式定义:
将一个请求封装为一个对象,从而使你不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
二、 模式解说
Commad模式是一种对象行为模式,它可以对发送者(sender)和接收者(receiver)完全解耦(decoupling)。("发送者" 是请求操作的对象,"接收者" 是接收请求并执行某操作的对象。有了 "解耦",发送者对接收者的接口一无所知。)这里,"请求"(request)这个术语指的是要被执行的命令。Command模式还让我们可以对 "何时 ...
- 2007-12-05 13:23
- 浏览 1089
- 评论(0)
Iterator模式定义:
提供一个方法顺序访问一个聚合对象的各个元素,而又不暴露该对象的内部表示。
这个模式在java的类库中已经实现了,在java中所有的集合类都实现了Conllection接口,而Conllection接口又继承了Iterable接口,该接口有一个iterator方法,也就是所以的集合类都可以通过这个iterator方法来转换成Iterator类,用Iterator对象中的hasnext方法来判断是否还有下个元素,next方法来顺序获取集合类中的对象。今天面试考到设计模式,我愣是没答上来,我晕死,自己这几天刚学的东西,自己也都理解,可一到考试的时候不是忘了就是回答的不准确, ...
- 2007-12-04 23:52
- 浏览 925
- 评论(0)
Builder模式定义:
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
刚接触到这个模式的时候,实在搞不明白它的意思,有什么用。于是,上网google了一圈,终于得到这个大家普遍认可的解释:
建造模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们,用户不知道内部的具体构建细节。
下面举一个例子来说明这个模式的使用,代码如下:
import java.util.ArrayList;
interface Builder{
public void buildPartA();
public void buildPartB();
...
- 2007-12-03 21:39
- 浏览 982
- 评论(0)
Prototype模式的意图是:
通过给出一个原型对象来指明所要创建的对象类型,然后用复制这个原型对象的办法创建出更多的同类型对象。
在java的类库中已经实现了这一模式,只要你定义的类实现了Cloneable接口,用这个类所创建的对象可以做为原型对象进而克隆出更多的同类型的对象。下面举个例子,来介绍简单的介绍一下它的使用。
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStrea ...
- 2007-12-02 16:16
- 浏览 903
- 评论(0)
《设计模式》一书对Factory Method模式是这样描述的:
定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。
我的理解:FatoryMethod模式是一种创建型模式,定义一个用于创建对象的接口的意思是说,我们要定义一个用于创建对象的接口(或者说抽象类,实际上就是个抽象工厂abstractFactory),它的内部有一个创建对象的方法,这个方法的返回值是一个接口(或者抽象类)的类型,这个方法就是FactoryMethod;让子类决定实例化哪一个类意思是说我们要定义一个实现了该创建对象的接口(或者抽象类) ...
- 2007-11-29 17:41
- 浏览 948
- 评论(0)
《设计模式》一书对Singleton模式是这样描述的:
保证一个类只有一个实例,并提供一个访问它的全局访问点。
这个模式比较简单,下面给出一个例子:
public class Singleton {
private static Singleton instance;
private Singleton(){
}
public static Singleton getInstance(){
if(instance==null)
instance=new Singleton();
return instance;
}
}
这个程序在单线程下运行不会 ...
- 2007-11-28 20:39
- 浏览 1010
- 评论(0)
《设计模式》一书对Template Method模式是这样描述的:
定义一个操作中算法的骨架,而将一些步骤延迟到子类中。不改变算法的结构而重新定义它的步骤。
我的理解:定义一个抽象类或者说接口,在它的内部定义一些抽象的方法(供TemplateMethod调用的步骤)和一个TemplateMethod方法(非抽象方法),封装了这些抽象方法的接口或抽象类就是骨架。而将它的实现延迟到子类中,也就是用子类实现它。不改变算法的结构而重新定义它的步骤,也就是改写或者实现父类的这些非TemplateMethod的抽象方法。下面给出一个例子:
abstract class QueryTemplate{
...
- 2007-11-28 20:36
- 浏览 880
- 评论(0)
《设计模式》一书对Observer是这样描述的:
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知并自动更新。
举个例子,在现实生活中,父母与孩子是最亲密的人。父母做为 ...
- 2007-11-28 20:34
- 浏览 845
- 评论(0)
《设计模式》一书对Decorator是这样描述的:
动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式比生成子类更为灵活。
也就是说:动态地给对象添加一些额外的功能。它的工作原理是:创建一个始于Decorator对象(负责新功能的对象)终止于原对象的一个对象的“链”。例如,我们要为超市的收银台设计一个打印票据的程序,有的需要打印票据的头信息,有的需要打印票据的页脚信息,有的只需要打印票据的内容。如果针对每一种情况都修改一次程序,势必会很麻烦。这时我们可以考虑使用Decorator模式。其结构类图如下:
代码如下:
abstract class Component{
...
- 2007-11-28 20:31
- 浏览 845
- 评论(0)
GOF《设计模式》一书对Abstract Factory模式是这样描述的:
为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类。
大致意思是说:我们在创建这些对象的时候,并不需要指定它们的具体类,这些具体类的对象是由工厂对象负责实例化的。下面是《Design Patterns Explained》一书的例子,有关计算机系统的显示和打印程序,用来显示和打印的分辨率取决于当前运行的系统。低端机使用低分辨率的显示和打印驱动程序,高端机使用高分辨率的显示和打印驱动程序。其结构图如下:
代码如下:
abstract class ResFactory{
...
- 2007-11-28 20:23
- 浏览 876
- 评论(0)
《设计模式》一书对Bridge是这样描述的:
将抽象与其实现解耦,使它们都可以独立地变化。
大致意思是说:将一组实现与另一组使用他们的对象分离。这里的实现指的是抽象类及其
派生类用来实现自己的对象(而不是抽象类的派生类,这些派生类被称为具体类)。下面
是《Design Patterns Explained》书中的例子。其结构图如下:
下面是它的实现:
abstract class Shape{
protected Drawing myDrawing;
abstract public void draw();
Shape(Drawing drawing){
...
- 2007-11-28 15:48
- 浏览 934
- 评论(0)
GOF《设计模式》一书对Strategy模式是这样描述的:
定义一系列的算法,把他们一个个封装起来,并且使它们可相互替换。Strategy模式使算法可独立于使用它的客户而变化。
Strategy模式以下列几条原则为基础:
1) 每个对象都是一个具有职责的个体。
2) 这些职责不同的具体实现是通过多态的使用来完成的。
3) 概念上相同的算法具有多个不同的实现,需要进行管理。
下面我将通过一个实例来说明它的具体使用,这个例子是关于数据库连接的。代码如下:
interface DatabaseStrategy{
public void process();
}
- 2007-11-23 18:43
- 浏览 978
- 评论(0)
GOF《设计模式》一书对Adapter模式是这样描述的:
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使原本由于接口不兼容而不能一起工作的类可以一起工作。
这段话大致是说:我们需要一种方式,为一个功能正确但接口不合的对象创建一个新接口。例如,客户给我们如下需求:
1) 为都有“显示”(display)行为的点、线、正方形分别创建类。
2) 客户对象不必知道自己到底拥有点、线、还是正方形。它只需知道拥有这些形状中的一个。
也就是说,我们要用一个更高层次的概念将这些具体形状都涵盖进去,这个高层概念可以称为:“可显示的形状”。因此,我们需要创建一个接口Shape:
in ...
- 2007-11-23 18:40
- 浏览 817
- 评论(0)
GOF《设计模式》一书对Facade模式是这样描述的:
为子系统中的一组接口提供一个统一接口。Facade模式定义了一个更高层的接口,使子系统更加容易使用。
大致意思是说:使用一种比原有方式更简单的办法与系统交互。例如,我们把一个很文件的文件,放在了第二抽屉里,而第二个抽屉的钥匙放在了第一个抽屉里,我们要想取出这个文件,第一步肯定要拿到第一个抽屉的钥匙,然后打开它再拿出第二个抽屉的钥匙,最后打开第二个抽屉取出文件。
我就上面说的那个情形写一下实现代码,首先我们要实现二个子系统,呵呵,把抽屉比喻成系统,有点夸张了(DrawerOne、Dra ...
- 2007-11-23 01:45
- 浏览 1006
- 评论(1)