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

设计模式之“结构型模式”(一)

时间:2014-12-09 23:12:37      阅读:436      评论:0      收藏:0      [点我收藏+]

标签:设计模式   结构   桥接模式   设计   dataset   

    结构型模式主要分为七大模式,分别为:适配器模式桥接模式组合模式装饰模式:外观模式、享元模式、代理模式

适配器模式

    将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

一、适用时期
    1、适用一个已经存在的类,但如果它的接口,也就是它的方法和你的要求不相同时,就应该考虑适用适配器。
    2、两个类所做的事情相同或相似,但是具有不同的接口时要使用它。
    3、在双方都不太容易修改的时候再使用适配器模式适配。

二、DataAdapter适配器
    DataAdapter用做DataSet和数据源之间的适配器以便检索和保存数据。DataAdapter通过映射Fill和Update来提供这一适配器。
    Fill:这更改了DataSet中的数据以便与数据源中的数据相匹配。
    Update:这更改了数据源中的数据以便与DataSet中的数据想匹配。


桥接模式

    将抽象部分与它的实现部分分离,使它们都可以独立的变化。实现指的是抽象类和它的派生类用来来实现
自己的对象。

一、作用
    1、把实现独立出来,让它们各自变化。使每种实现的变化不会影响其他实现,从而达到应对变化的目的。
    2、实现系统可能有多角度分类,每一种分类有可能变化,把这种多角度分离出来让让它们独立变化,减少之间的耦合。

二、合成/聚合复用原则
    尽量使用合成/聚合,尽量不要使用类继承。

三、好处
    优先使用对象的合成/聚合将有助于保持每个类被封装,并被集中在单个任务上,这样类和类继承层次会保持较小的规模,并且不太可能增长为不可控制的庞然大物。


组合模式

    将对象组合成树形结构以表示‘部分-整体’的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。
    
一、适用时期
    需求中是体现部分与整体层次的结构时,以及你希望用户可以忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象时,可以考虑使用组合模式

二、优点    
    组合模式让客户可以一致地使用组合结构和单个对象。


装饰模式

    动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。

一、优点
    1、把类中的装饰功能从类中搬移去除,这样可以简化原有的类。
    2、有效地把类的核心职责和装饰功能区分开了,而且可以去除相关类中的重复的装饰逻辑。

二、总结
    1、装饰模式是为已有功能动态地添加更多功能的一种方式。
    2、根据需要有选择地、按顺序地使用装饰功能包装对象



外观模式

    为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

一、适用时期
    1、设计初期,应该要有意识的将不同的两个层分离,层与层之间建立外观Facade。
    2、开发阶段,子系统往往因为不断的重构演化而变得越来越复杂,增加外观Facade可以提供一个简单的接口,减少他们的依赖。
    3、在维护一个遗留的大型系统时,可能这个系统已经非常难以维护和扩展了,可以为新系统开发一个外观Facade类,让新系统与Facade对象交互,Facade与遗留代码交互所有复杂的工作。


享元模式

    运用共享技术有效地支持大量细粒度的对象。
    
一、适用时期
    1、如果一个应用程序使用了大量的对象,而大量的这些对象造成了很大的存储开销时就应该考虑使用。
    2、对象的大多数状态可以外部状态,如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象,此时可以考虑使用享元模式。


代理模式

    为其他对象提供一种代理以控制对这个对象的访问。
一、应用
    1、远程代理:为一个对象在不同的地址空间提供局部代表,可以隐藏一个对象存在于不同地址空间的事实。
    2、虚拟代理:根据需要创造开销很大的对象,通过它来存放实例化需要很长时间的真实对象。
    3、安全代理:用来控制真实对象访问时的权限。
    4、智能指引:指用真实的对象时,代理处理另外一些事。


小结:

    结构型模式主要作用于类与对象的结构,采用继承、实现和组合等的方式,使得
对象能实现新的功能。

设计模式之“结构型模式”(一)

标签:设计模式   结构   桥接模式   设计   dataset   

原文地址:http://blog.csdn.net/zygyl/article/details/41828903

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