zoukankan      html  css  js  c++  java
  • 【设计模式】设计模式概述

    一.策略模式

      定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

    (原文:The Strategy Pattern defines a family of algorithms,encapsulates each one,and makes them interchangeable. Strategy lets the algorithm vary independently from clients that use it.)

       应用场景:

      1、 多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为。(例如FlyBehavior和QuackBehavior)

      2、 需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现。(例如FlyBehavior和QuackBehavior的具体实现可任意变化或扩充)

      3、 对客户(Duck)隐藏具体策略(算法)的实现细节,彼此完全独立。

    优点:

      1、 提供了一种替代继承的方法,而且既保持了继承的优点(代码重用)还比继承更灵活(算法独立,可以任意扩展)。

      2、 避免程序中使用多重条件转移语句,使系统更灵活,并易于扩展。

      3、 遵守大部分GRASP原则和常用设计原则,高内聚、低偶合。

      缺点:

      1、 因为每个具体策略类都会产生一个新类,所以会增加系统需要维护的类的数量。

         http://www.cnblogs.com/justinw/archive/2007/02/06/641414.html

     二.观察者模式

        该模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新.

         http://www.cnblogs.com/justinw/archive/2007/05/02/734522.html

    三.装饰着模式

     该模式动态地将责任附加到对象上.若要扩展功能,装饰者提供了比继承更有弹性的替代方案.

    http://www.cnblogs.com/justinw/archive/2007/06/11/779356.html

    四.工厂方法模式

      定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类.

    五.抽象工厂模式

       提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类.

    六.单件模式

       确保一个类只有一个实例,并提供一个全局访问点.

    七.命令模式

      将"请求"封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象.命令模式也支持撤销的操作.

    八.适配器模式

       将一个类的借口,转换成客户期望的另一个接口.适配器让原本接口不兼容的类可以合作无间.

    九.模板方法模式

       在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤.

    十.迭代器模式

       提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示.

    十一.组合模式

       允许你将对象组合成树形结构来表现 "整体/部分"层次结构。组合能让客户以一致的方式处理个别对象以及组合对象。

    十二.状态模式

       允许对象在内部状态改变时改变他的行为,对象看起来好像修改了它的类.

          类图与策略模式基本一样,但意图不一样,需要区分。

     一般来说,我们把策略模式想成是除了继承之外的一种弹性替代方案.

       我们把状态模式想成是不用在Context中放置许多条件判断的替代方案.通过将行为包装进状态中,你可以通过在Context中简单地改变状态对象来改变Context的行为.

    十三.代理模式

      为另一个对象提供一个替身或占位符以控制对这个对象的访问.

       使用代理模式创建代表(representative) 对象,让代表对象控制某对象的访问,被代理的对象可以是远程的对象,创建开销大的对象或需要安全控制的对象.

    模式中的模式

      模式通常被一起使用,并被组合在同一个设计解决方案中.

     复合模式在一个解决方案中结合两个或多个模式,以解决一般或重复发生的问题。

    MVC 模型--视图--控制器.是复合模式,结合了观察者模式,策略模式和组合模式.

    模型使用观察者模式以便观察更新,同时保持两者之间的解耦。

    控制器是视图的策略,视图可以使用不同的控制器实现,得到不同的行为.

    视图使用组合模式实现用户界面,用户界面通常组合了嵌套的组件,像面板,框架.

    这些模式携手合作,把MVC模型的三层解耦,这样可以保持设计干净又有弹性.

    适配器模式用来将新的模型适配成已有的视图和控制器.

    设计模式是MVC的钥匙.

  • 相关阅读:
    [bbk5102] 第38集 第四章 Flashback Database 02
    index
    [bbk5110] 第41集 第四章 Flashback Database 05
    支持向量机SVM基本问题
    凸优化小结
    博客基本操作
    感知机vs支持向量机
    PAYPAL商户集成指南-IPN&PDT变量列表
    一个IBM人的离职泪:伟大公司,SB老板,苦逼员工 (zz.IS2120.BG57IV3)
    Google Reader 7.1停止服务
  • 原文地址:https://www.cnblogs.com/cuishao1985/p/1787869.html
Copyright © 2011-2022 走看看