Structural Patterns 结构型
目的 |
获取更大的结构: 组合类和对象 继承机制:组合接口或实现 结构型对象模式:组合对象实现新功能,在运行时改变对象组合关系 |
内容 |
The Adapter Pattern 适配器模式 SpringMVC The Decorator Pattern 装饰者模式 I/O系统、Servlet The Proxy Pattern 代理模式 JDK、Spring的Cliglable、分布式组件 The Composite Pattern 组合模式 DOM解析 The Facade Pattern 外观模式 层式结构:Web、Service、Domian、Persistence |
The Adapter Pattern 适配器模式
类/对象结构型模式 |
意图:将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 适用:1.你想使用一个已经存在的类,而它的接口不符合你的需求 2.你想创建一个可以服用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作 3.(仅适用于对象Adapter),你想使用一些已经存在的子类,但是不可能对每一个都进行 |
场景: |
转换类的编程接口:[将编程接口不同而功能相似的类用一个统一的接口封装起来。] 思想:中转桥梁:屏蔽类编程细节的目的。[实现了统一接口的类] |
实现: |
类继承:以需要适配的类为基础,派生一个子类,然后在子类中添加新的函数,实现指定的统一接口 类联合:创建一个新的类,其中包含需要适配的类。然后给新类添加函数,实现制定的统一接口。 |
应用: |
AWT类转换JFC springMVC: ????源码 |
The Decorator Pattern 装饰者模式
场景 |
无需创建派生类,改变对象行为。 类继承: 需要创建派生类,改变对象行为 Decorator:无需创建派生类,改变对象行为。 |
实现 |
类继承: 解决对象行为改变问题时,关键是在派生类中覆盖需要改变行为的函数。 [即:拦截函数激发的方法,在函数激发前后添加动作二实现行为变更。 ] Decorator:截获函数激发 首先,将预拦截的函数提取到一个基类或接口中,再针对各种动作分别实现响应的类 然后,通过类的联合嵌套,实现函数的拦截。 该方法能由改变类的嵌套来达到以任何特性的组合,改变函数行为的目的 |
Java的I/O系统:Decorator、接口、抽象类 Servlet:是用于编写动态网页的服务端组件。容器接收到Http请求后就激活相应的Servlet,由其运行后输出结果返回给客户端。 在Servlet激发之前(或后)往往需要执行某些附加的动作,比如显示广告、网页的一些固定标题栏等等。于是依据Decorator,引入Filter |
The Proxy Pattern 代理模式
场景 |
1.简单对象表示复杂对象 2.创建对象,比较耗时或消耗资源很多,则可以为其创建一个Proxy对象。 [ 将对象的创建和初始化推迟到真正需要使用的时候进行,即惰性载入策略.如:对象访问涉及权限问题 ] Facade:物理上的分离系统,交互调用要有一个定义良好的接口 Proxy: 分布式系统 |
应用 |
JDK动态代理: Cglible代理: EJB:典型的分布式组件,其客户端全都是Proxy对象与之交互。 [ 容器可以从中透明地加入安全、事务、惰性载入和生命周期管理等服务。] JDO:使得客户端以对象的方式操作数据的数据。 [ 客户端访问的对象全是代理对象,其中实现了缓冲和惰性载入的功能] |
The Composite Pattern 组合模式
The Composite Pattern |
组件既可以仅仅为一个单独的对象,也可用对象集合来表示。 |
应用 |
典型:树形结构数据.[每个节点既可包含多个子节点,也可能是叶子结点,且每个节点一般是不同的类] Composite:将节点组织起来,从所有节点类中抽象出能表示其共性和树型结构的接口。 1,OA 2,DOM |
1,OA 2,DOM |
The Facade Pattern 外观模式
The Facade Pattern |
将复杂系统依据其各模块(或层)的功能,提取出接口,屏蔽掉具体的实现逻辑。 Facade:屏蔽模块的具体实现 Factory:屏蔽模块的创建逻辑 核心:层间依靠,完全依靠接口 |
应用 |
层式结构:Web、Service、Domain、Persistence。 场景:远程通讯和事务 |
总结