Design pattern No2:Structural Patterns

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。

场景:远程通讯和事务


总结

猜你喜欢

转载自blog.csdn.net/ddhmbbklyk2018/article/details/81876940
今日推荐