J2EE设计模式 彭晨阳(板桥里人) http://www.jdon.com http://www.jdon.com 设计模式是系统架构之基础 J2EE多层系统主要由架构设计、框架以及 多个设计模式组成。 设计模式是一种实践的总结,是OOP最直 接的表现。 掌握设计模式与否是衡量程序员设计水平 高低的主要依据。 http://www.jdon.com GoF设计模式 GoF设计模式主要列举了常用的23种模式 Java的GoF设计模式实现主要表现在面向 接口编程。 工厂模式是最常用的一种设计模式 http://www.jdon.com 工厂模式简介 设定一个Class名称是AClass,在面向对象 编程中,一般一个Class都会继承一个接口, 设定AClass的接口为AInterface,那么生成 AClass的对象方法如下: AInterface a = new AClass(); http://www.jdon.com 工厂模式简介(续) 改写成下列方式: AInterface a = Afactory.create(); //代码2 上面代码2这一行是使用Afactory的create方 法来生成AInterface实例 http://www.jdon.com 工厂模式简介(续) Afactory的create方法封装了具体创建细节。 解耦了创建过程和使用过程,系统可扩展性增强, 稳定性增强。 Afactory的create方法代码: public static AInterface create(){ …… return new AClass(); } http://www.jdon.com EJB调用是工厂模式的实现 调用EJB 语法: EJBHome em = JNDIServer.getRemoteHome(EJB-JNDI-NAME); EJBObject myEJB = em.create(); em.create()类似Afactory.create(); EJBObject 是接口 http://www.jdon.com Façade模式 http://www.jdon.com 会话 Bean和实体Bean 一个会话Bean中调用多个实体Bean 该会话Bean是一个Façade类/Manager类 使用Façade 会话Bean优点: 1. 提供性能,节省客户端直接调用实体 Bean的网络开销 2. 解耦分层,利于扩展变化。 http://www.jdon.com DTO模式 DTO模式或称VO模式,是指将数据封装成 普通的JavaBeans,在J2EE多个层次之间 传输。 DTO类似信使,是同步系统中的Message 该JavaBeans可以是一个数据模型Model http://www.jdon.com 数据建模 Model 、 Domain Object以及DTO关系 1. 分析提炼Model是系统设计之起端 2. 系统设计之初,三者基本统一 3. 系统复杂化后,DTO可能是多个Model组 合实现; http://www.jdon.com Model与MDA http://www.jdon.com MVC模式 MVC模式是J2EE Web层的主要实现 http://www.jdon.com Struts框架(Framework) Struts框架是MVC模式的实现(特例化) 框架(Framework)与模式(Pattern)的 关系: 1. 设计模式比框架更抽象; 2. 设计模式是比框架更小的体系元素; 3. 框架比设计模式更加特例化; http://www.jdon.com 代理模式 代理模式是容器级别或框架级别的模式 代理模式可以强迫客户端对一个对象的方 法调用间接通过代理类进行。 通常代理模式有以下几种:访问代理 (Access Proxy)、虚拟代理和远程代理 等。 http://www.jdon.com 代理模式 接口: public interface BaseIF{ public Object myMethod(); } 原始类: public class OriginClass implements BaseIF{ public Object myMethod (){ return " hello , It is me! "; } } http://www.jdon.com 代理模式(续) 代理类: public class ProxyClass implements BaseIF{ public Object myMethod (){ //通过网络协议调用远程的OriginClass BaseIF instance = getRemoteOrigin (); Return instance.myMethod (); } ….. } 客户端调用 BaseIF instance = new Proxy Class(); String = (String)instance.myMethod (); System.out.println(result); //将会输出 hello , It is me! http://www.jdon.com 动态代理模式 动态代理利用Java的反射(Reflect)机制,可以 在运行时刻将一个对象实例的方法调用分派到另 外一个对象实例的调用。 动态代理模式可以在运行时刻创建继承某个接口 的类型安全的代理对象,而无需在代码编译时编 译这些代理类代码。是AOP的良好实现。 使用动态代理模式,基本可以实现完全解耦,例 如JBoss 3.XX容器核心。 http://www.jdon.com JdonSD框架 JdonSD框架揉和 了多种设计模式 JdonSD框架融入 了AOP、MDA最新 设计思想 即将加入RBAC、 工作流