现在的位置: 首页 > 综合 > 正文

设计模式Java实现(三)

2013年10月12日 ⁄ 综合 ⁄ 共 2536字 ⁄ 字号 评论关闭

门面模式(Facade Pattern)

由于客户端需要调用多个系统才能完成一件业务操作,所以客户端需要感知多个子系统,并依赖这些子系统。门面(Facade)的作用就是聚合这些子系统,由门面对外提供接口,客户端只需要感知和依赖门面即可,无需再依赖其他子系统。

门面模式的设计和实现都很简单,这里可以下载门面模式的Java实现版本。

门面模式的UML类图如下:



享元模式(Flyweight Pattern)

享元模式是对象结构模式,它以共享的方式高效的支持大量的细粒度对象。java.lang.String类就使用了享元模式,java.lang.String对象是不可变对象,一旦创建,将不会被修改,如果需要修改,那么会返回另外一个对象。但在JVM内部,使用了一个共享变量池共享java.lang.String对象,即在JVM内部,java.lang.String对象是共享的。享元模式分为单纯享元模式和复合享元模式。在单纯享元模式中,所有对象都是可以被共享的。复合享元模式即在单纯享元模式内部又是有合成模式加以复合,形成复合享元对象。以下是Java版本的上述两种模式实现的代码下载

单纯享元模式的UML类设计图如下:


复合享元模式的UML类设计图如下:



原型模式(Prototype Pattern)
原型模式是对象的创建模式,该模式能够通过负责原型对象的方式,创建出更多同类型的对象。Java语言直接支持构建模式,java.lang.Object类里面已经定义了clone()方法,通过该方法,可以copy出一个与当前对象一模一样的新对象。需要使用该特性的对象,继承标识接口Cloneable即可。涉及到clone方法,有太多的需要主要的地方,例如浅拷贝和深拷贝的问题,在本例的实现中,深拷贝是使用对象序列化的方式来实现的,而不是使用传统的递归调用clone方法的方式。

原型模式的Java代码实现可以在这里下载

原型模式的UML类图如下:



单例模式(Singleton Pattern)

单例模式是对象的构建模式,单例模式确保全局(整个JVM)只有一个该对象的实例。总体来说,单例模式的实现非常简单,大致可以分为饿汉式和懒汉式。但这两种实现方式都有各种的问题,另外一种通过内部类持有对象实例的方式,将上述两种实现的缺点都规避掉了。

单例模式的三种实现方式Java版本下载到这里

饿汉式单例模式UML类图:


懒汉式单例模式UML类图:


内部类持有对象实例的方法UML类图:



策略模式(Strategy Pattern)

策略模式是对象的行为模式,它将一组不同的算法封装在相同接口的后面,从而使它们可以互相的替换。策略模式可以使算法在不影响客户端的情况下进行变化。

策略模式的代码实现在这里可以下载

策略模式的UML类设计图:



模板方法模式(Template Method Pattern)

模板方法模式是对象的行为模式,其定义了算法的流程,但将算法中某些步骤的具体实现较给子类来决定,不同的子类可以以不同的方式实现。

模板方法模式的代码实现在这里可以下载

模板方法模式的UML类设计图:

门面模式(Facade Pattern)

由于客户端需要调用多个系统才能完成一件业务操作,所以客户端需要感知多个子系统,并依赖这些子系统。门面(Facade)的作用就是聚合这些子系统,由门面对外提供接口,客户端只需要感知和依赖门面即可,无需再依赖其他子系统。

门面模式的设计和实现都很简单,这里可以下载门面模式的Java实现版本。

门面模式的UML类图如下:



享元模式(Flyweight Pattern)

享元模式是对象结构模式,它以共享的方式高效的支持大量的细粒度对象。java.lang.String类就使用了享元模式,java.lang.String对象是不可变对象,一旦创建,将不会被修改,如果需要修改,那么会返回另外一个对象。但在JVM内部,使用了一个共享变量池共享java.lang.String对象,即在JVM内部,java.lang.String对象是共享的。享元模式分为单纯享元模式和复合享元模式。在单纯享元模式中,所有对象都是可以被共享的。复合享元模式即在单纯享元模式内部又是有合成模式加以复合,形成复合享元对象。以下是Java版本的上述两种模式实现的代码下载

单纯享元模式的UML类设计图如下:


复合享元模式的UML类设计图如下:



原型模式(Prototype Pattern)
原型模式是对象的创建模式,该模式能够通过负责原型对象的方式,创建出更多同类型的对象。Java语言直接支持构建模式,java.lang.Object类里面已经定义了clone()方法,通过该方法,可以copy出一个与当前对象一模一样的新对象。需要使用该特性的对象,继承标识接口Cloneable即可。涉及到clone方法,有太多的需要主要的地方,例如浅拷贝和深拷贝的问题,在本例的实现中,深拷贝是使用对象序列化的方式来实现的,而不是使用传统的递归调用clone方法的方式。

原型模式的Java代码实现可以在这里下载

原型模式的UML类图如下:



单例模式(Singleton Pattern)

单例模式是对象的构建模式,单例模式确保全局(整个JVM)只有一个该对象的实例。总体来说,单例模式的实现非常简单,大致可以分为饿汉式和懒汉式。但这两种实现方式都有各种的问题,另外一种通过内部类持有对象实例的方式,将上述两种实现的缺点都规避掉了。

单例模式的三种实现方式Java版本下载到这里

饿汉式单例模式UML类图:


懒汉式单例模式UML类图:


内部类持有对象实例的方法UML类图:



策略模式(Strategy Pattern)

策略模式是对象的行为模式,它将一组不同的算法封装在相同接口的后面,从而使它们可以互相的替换。策略模式可以使算法在不影响客户端的情况下进行变化。

策略模式的代码实现在这里可以下载

策略模式的UML类设计图:



模板方法模式(Template Method Pattern)

模板方法模式是对象的行为模式,其定义了算法的流程,但将算法中某些步骤的具体实现较给子类来决定,不同的子类可以以不同的方式实现。

模板方法模式的代码实现在这里可以下载

模板方法模式的UML类设计图:

抱歉!评论已关闭.