当前位置:首页 > 开发 > 编程语言 > 设计模式 > 正文

设计模式应用浅述(二)

发表于: 2010-08-27   作者:bardo   来源:转载   浏览次数:
摘要: 二、结构型模式——类与方法的调用控制问题       结构型模式根本点是处理调用与控制。请注意“总结”这个标签中的说明。这一部分不会因为我们在写代码时,需要将什么当成变量处理时,会想到什么模式,所以,这一部分是需要细心领会的。只有对此有足够了解时,才能写出松耦合的代码。     Adapter(适配器):将一个类的接口转换

二、结构型模式——类与方法的调用控制问题

 

    结构型模式根本点是处理调用与控制。请注意“总结”这个标签中的说明。这一部分不会因为我们在写代码时,需要将什么当成变量处理时,会想到什么模式,所以,这一部分是需要细心领会的。只有对此有足够了解时,才能写出松耦合的代码。


    Adapter(适配器):将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
    实现方式:创建一个Adapter,对构造函数传入的类作为实际操作类。Adapter通过代码对操作类各个方法的调用,实现调用方所需要的方法。
    总结:通过将目标对象作为参数传给Adapter,通过Adapter向调用方提供所需要的接口。
    选择模式:方法与代码的组合。方法调用的一致性。本地使用唯一方法调用,外部实现代码配合

 

    Bridge(桥接):将抽象部分与它的实现部分分离,使它们都可以独立地变化。
    实现方式:Bridge对象通过父类的构造函数获得参数后,通过聚合参数中指定的类,同时创建对应的拥有相关方法的子类,从而在聚合的类与相关子类之间架设了一座桥。
    总结:通过构造函数中的参数实现子类与另一类的组合。
    选择模式:类与类的组合。多层继承会产生一个迪卡尔积的类,这样类太多了。如果只是组合,则Bridge实现了二维到多维的选择。


    Composite(组合):将对象组合成树型结构以表示“部分-整体”的层次结构。Composite使得客户对单个对象和复合对象的使用具有一致性。
    实现方式:单个模式的对象与复合对象(其中数量有多个)均继承同一的抽象类,实现完全相同的接口。
    总结:将复数与单数类一致起来
    选择模式:单数与复数的一致性。在选择时无需再区分复数还是单数。


    Decorator(装饰):动态地给一个对象添加一些额外的职责。就扩展功能而言,Decorator模式比生成子类方式更为灵活。
    实现方式:新的Decorator类把原来的类作为属性,并增加所需的方法。
    总结:将原来的子类与新方法组合起来,实现多对多组合。
    选择模式:子类与方法的组合

 

    Facade:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
    实现方式:用一个类抽象出对某一子系统部分的操作,并实现相关的代码。
    总结:合并固定的一组操作到前置的类中。
    选择模式:不同类的不同方法选择,并组合成代码,成为Facade类的方法。


    Flyweight(享元):运用共享技术有效地支持大量细粒度的对象。
    实现方式:需要一个享元工厂管理共享的资源,把所有共享的资源的生产全部交给个享元工厂。其中包括保存细粒度对象的属性(数组类型),以及获取细粒度对象的方法,通常是工厂方法。
    总结:做一个对象的存储器。
    选择模式:从大量共享对象中选择。统一选择接口。


    Proxy:为其他对象提供一个代理以控制对这个对象的访问。
    实现方式:在实际要使用的类“前端”再加一个类,用以完成相关的控制。
    总结:对类方法调用增加前置预处理。成为中转代理类。
    选择模式:对调用进行选择与控制。

设计模式应用浅述(二)

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
在上文:深入浅出设计模式二——WeatherData设计(观察者模式)实现一 我们利用了自己缩写的Subject
UML详细图 良好的OO设计必须具备可复用、可扩展、可维护三个特性。 观察者模式: 出版者+订阅者=观
浅述MongoDB的管理操作 不知不觉房产系统已经使用MongoDB一年多了,记得一年多以前,正是NOSQL被热
不知不觉房产系统已经使用MongoDB一年多了,记得一年多以前,正是NOSQL被热炒时,MongoDB更是作为NO
浅述MongoDB的管理操作 2011-08-22 21:49 不知不觉房产系统已经使用MongoDB一年多了,记得一年多以
深入浅出设计模式-设计模式介绍 ? 2010-12-21 来源:网络 1. Welcome to Design Patterns -设计模式
今天我们来探讨一下设计模式中的状态模式。 假设我们需要完成这样一个需求,设计一个糖果机程序:
总结:命令模式就是把命令给封装起来,然后给其他对象调用(参数化:如remote.setCommand(lightOn)
[转自]http://www.cnblogs.com/kamome/archive/2010/02/02/1661605.html 目录 体会1:static不能称
一、引子   状态模式自身结构非常简单——前面刚刚介绍了几个结构比较简单的设计模式,和他们一样
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号