码迷,mamicode.com
首页 > 其他好文 > 详细

"围观"设计模式(30)--结构型设计模式总结(适配器、代理、装饰、外观、桥梁、组合、享元)

时间:2016-07-10 18:48:14      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

设计模式代码下载地址

设计模式代码下载地址


1  适配器模式

在设计模式中,适配器模式(英语:adapter pattern)有时候也称包装样式或者包装(wrapper)。将一个类的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。----WIKIPEDIA

个人理解
适配器模式:将两个不一致或者说无法直接使用的类或者接口通过适配器模式进行兼容,使得他们可以在一块使用。适配器模式在之前的项目中我是用于处理数据的不兼容的,对方的数据和我们的数据格式不完全一致,包括,类型的不一致和内容的不一致,类型的不一致比较容易解决,但是内容的不一致比如:对方的数据中存在一个id对应着俩值,而在我们的系统中,一个id只对应一个值,这样的话,显然没办法直接使用,而且,需要对对方的数据进行存储下来,进行了一定的设置后才会将数据存入我们的数据库中,我当时的解决办法是,将存入本地的id设为string类型,然后通过id_** ,id_标识位 进行标识该值属于哪个id以及其代表的意义。为了实现这种目的我采用了适配器模式,对方传递的数据封装好,通过适配器将该封装好的对象转为我们可以进行本地存储的对象。
"围观"设计模式(11)--结构型之适配器模式(Adapter Pattern)


2  代理模式

代理模式(英语:Proxy Pattern)是程序设计中的一种设计模式。
所谓的代理者是指一个类可以作为其它东西的接口。代理者可以作任何东西的接口:网络连接、内存中的大对象、文件或其它昂贵或无法复制的资源。----WIKIPEDIA

个人理解
代理模式就是找另外的一个对象作为代理去为你实施请求,代理模式分为两种,一种是静态代理模式,另外一种是动态代理模式,静态代理模式是代理类为其创建一个对象,将需要代理的类的对象赋予代理类中的该对象,让代理类中该对象去代替需要代理的类的对象去执行一定的任务。动态代理模式采用JDK的动态代理,根据其类加载器以及其实现的接口生成代理对象,通过反射机制实现动态代理。"围观"设计模式(12)--结构型之代理模式(Proxy Pattern)

3  装饰模式

修饰模式,是面向对象编程领域中,一种动态地往一个类中添加新的行为的设计模式。就功能而言,修饰模式相比生成子类更为灵活,这样可以给某个对象而不是整个类添加一些功能。----WIKIPEDIA

个人理解

相比而言我对装饰模式的理解还不是很深入,在项目中还不知道该怎么去使用它,或许是没有遇到需要装饰模式的情景吧,我对于装饰模式的理解是通过装饰模式可以实现对功能的扩充,由此我想到了面向切面编程,因为我记得AOP在实现的时候,就是对类的功能进行增强,可以在方法调用前执行、调用后、异常时等发生的时候去执行相应的处理,我在想会不会实现的时候采用的模式就是装饰模式呢?这里我先留着这个疑问后期有时间看源码的话再去探讨到底是不是用了这个模式。装饰模式中可以通过构造函数传入要装饰的类的实例,装饰类和被装饰的类要有相同的接口,保证当装饰类没有进行增强处理的时候,依然可以去执行被装饰类应该执行的方法。

"围观"设计模式(13)--结构型之装饰模式(Decorator Pattern)



4  外观模式

外观模式(Facade pattern),是软件工程中常用的一种软件设计模式,它为子系统中的一组接口提供一个统一的高层接口,使得子系统更容易使用。----WIKIPEDIA
个人理解

当一个项目中出现比较杂乱的调用关系时,类与类之间的耦合关系过于复杂,为了降低耦合度,我们可以采用一个公共的接口与其他类发生耦合,这样可以尽量大的降低外界与该系统的耦合度,同时降低了整个系统的复杂度,外观模式相当于一个公共的入口一样,为使用者敞开大门,暴漏一些必要的接口,方便外界进行调用。通俗来讲就是,有多个不同的类提供了多个访问的接口,外观模式就是要统一将这些接口进行管理。

"围观"设计模式(14)--结构型之外观模式(Facade Pattern)



5  桥梁模式

桥接模式是软件设计模式中最复杂的模式之一,它把事物对象和其具体行为、具体特征分离开来,使它们可以各自独立的变化。事物对象仅是一个抽象的概念。如“圆形”、“三角形”归于抽象的“形状”之下,而“画圆”、“画三角”归于实现行为的“画图”类之下,然后由“形状”调用“画图”。----WIKIPEDIA

个人理解
桥梁模式的核心在于解耦,通过抽象化将具体的事物抽象成一般的事物,也就是具有共性的东西,将两个角色之间的继承关系改为聚合关系,就是将它们之间的强关联改换成为弱关联。因此,桥梁模式中的所谓脱耦,就是指在一个软件系统的抽象化和实现化之间使用聚合关系而不是继承关系,从而使两者可以相对独立地变化。这就是桥梁模式的用意。
"围观"设计模式(15)--结构型之桥梁模式(Bridge Pattern)


6  组合模式

组合模式也叫合成模式,有时又叫做部分-整体模式,主要是用来描述部分与整体的关系,其定义为:将对象组合成树形结构以表示“整体与部分”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。----设计模式之禅
个人理解
组合模式目的是将整体与部分组合成树形来表示整体与部分的层次,使得用户对单个对象和组合对象的使用具有一致性的接口,也就是通过接口对子对象统一操作。"围观"设计模式(16)--结构型之组合模式(Composite Pattern)



7  享元模式

享元模式(英语:Flyweight Pattern)是一种软件设计模式。它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于当大量物件只是重复因而导致无法令人接受的使用大量内存。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。----WIKIPEDIA

个人理解
共享,内存消耗大的时候应考虑对象的共享,共享对象可以减少对象的生成数量,这样可以减少内存的消耗,当一个对象和其他的对象存在共性且内容一致的时候,可以将共有的部分抽取出来进行共享,这样生成的所有对象占用内存的总和会减少,这就体现了共享的重要性。"围观"设计模式(17)--结构型之享元模式(Flyweight Pattern)

"围观"设计模式(30)--结构型设计模式总结(适配器、代理、装饰、外观、桥梁、组合、享元)

标签:

原文地址:http://blog.csdn.net/wangyang1354/article/details/51868596

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!