Java设计模式(25)总结:结构型设计模式

来源:互联网 发布:java获取方法执行时间 编辑:程序博客网 时间:2024/05/21 09:11

(一)概述

结构型设计模式旨在从程序的结构上解决模块与模块间的耦合。它们包括适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式和享元模式。


(二)区别

1)配置器模式、装饰模式、代理模式与外观模式的比较

这四种模式代码编写结构几乎是一模一样,都是一个对象通过引用另一个对象实现对功能接口的封装,从而实现业务接口的加密、兼容或扩展,其中配置器模式、装饰模式、代理模式封装对象都继承了原抽象对象或实现了原接口。

它们的不同点在于实现的业务目的不一样:适配器模式是保证原接口仍然可用的情况下,根据用户变化的需求适配出合适的接口;装饰模式是为了增强原对象函数的功能;代理模式是为了隐藏客户端对真正业务对象的引用,通过中介代理的方式限制客户端的访问权限;外观模式是为了将需要共同完成某项功能的各个子系统封装起来。

2)桥接模式

桥接模式是指将抽象化角色具体实现化角色解耦分离,两者互不影响,多个抽象化角色可以对应多个具体实现化角色。过程是:修正抽象化角色继承了抽象化角色,并定义一个set/get 函数设置或获取实现化接口角色,这里要注意的是set/get的是接口,所有具体实现化角色都需要实现同一实现化接口角色这样就实现了对具体实现化角色无限制,只要是实现了实现化接口角色都可以作为set/get的参数或返回值

(注)抽象化(Abstraction)角色:抽象化给出的定义,并保存一个对实现化对象的引用。
(注)修正抽象化(Refined Abstraction)角色:
扩展抽象化角色,改变和修正父类对抽象化的定义。
(注)实现化(Implementor)接口角色:这个角色给出实现化角色的接口,但不给出具体的实现。必须指出的是,这个接口不一定和抽象化角色的接口定义相同,实际上,这两个接口可以非常不一样。实现化角色应当只给出底层操作,而抽象化角色应当只给出基于底层操作的更高一层的操作。
(注)具体实现化(Concrete Implementor)角色:这个角色给出实现化角色接口的具体实现。

3)组合模式

组合模式是指将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。每一个枝节点可有有多个叶子节点,而每一个叶子节点只能有一个枝节点或多个叶子节点。如计算机系统的目录结构,就可以用此种模式设计

4)享元模式

享元模式是指使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于只是因重复而导致使用无法令人接受的大量内存的大量物件。其实就是给每个对象一个唯一标识,将这些对象存储在数组中,客户端引用这些对象时通过ID引用,如引用到ID相同对象,均从列表中获取,不再创建新对象,客户端共享实体对象里的函数算法,值得注意的是只共享函数算法,不共享数据。

(注)要了解内蕴状态和外蕴状态。

0 0
原创粉丝点击