0%

  • 动机
    • 在软件系统采用纯粹对象方案的问题在于大量细颗粒度对象充斥在系统中,从而带来很高的运行时代价
      • — 主要指 内存需求 方面的代价
  • 模式定义
    • 运用 共享技术 有效的支持大量细颗粒度的对象
      Read more »

面向对象很好的解决了“抽象”的问题,但是必不可免的要付出一定的代价。对于通常情况来讲。面向对象的成本大都可以忽略不计。但在某些情况,面向对象所带来的成本必须谨慎处理

  • 动机
    • 在软件系统中,经常有一些特殊的类,必须保证他们在系统中 只存在一个实例 ,才能保证他们的逻辑正确性、以及良好的效率
    • 这个是类设计者的责任,而不是使用者的责任
      Read more »

  • 动机
    • 面临一个 “复杂对象” 的创建工作,其通常由各个部分的子对象用一定的算法构成。
      • 复杂对象的 各个部分 经常面临 剧烈的变化
      • 组合在一起的 “复杂对象算法”相对稳定
        Read more »

  • 动机

    • 软件系统中,经常面临着 “某些结构复杂的对象” 的创建工作,由于需求的变化,这样的对象经常面临着剧烈的变化,但是他们却拥有着比较 稳定一致的接口
  • 使用时

  • 通过“对象创建”模式绕开new,来避免对象创建(new) 过程中所导致的紧耦合(依赖工具类),从而支持对象创建的稳定。他是接口抽象之后的第一步工作
  • 典型模式
    • Factory Method
    • Abstract Factory
    • Prototype
    • Builder
  • 动机
    • 在软件系统中,经常面临着创建对象的工作,由于需求的变化,需要创建的对象的基本类型经常变化
    • 如何应对这种变化,如何绕过常规的对象创建方法(new),提供一种“封装机制”来避免客户程序和这种“具体对象创建工作”的紧耦合
  • 缺点

  • 装饰者模式
    • 动机

      在某些情况下我们可能会”过度的使用继承来扩展对象的功能”,由于继承为类型引入静态特质,使得这种扩展方式缺乏灵活性。并且随着子类的增多(扩展功能的增多),使各子类的组合(扩展功能的组合)会导致更多子类的膨胀

Read more »

  • 观察者模式(Observe)
    • 动机

      在软件构建过程中,我们需要为某些对象建立一种 (通知依赖关系)


      —— 一个对象 ***(目标对象)*** 的状态发生改变,所有的依赖对象 ***(观察者对象)*** 都将得到通知。如果这样的依赖关系过于紧密,将使得软件不能很好的抵御变化

      使用面向对象技术,可以将这种依赖弱化,并形成一定稳定的依赖关系。从而实现软件体系结构的松耦合

Read more »

  • 策略模式

    • 解决某些对象使用多种算法。将算法与对象本身节藕,从而实现透明的更改对象的算法
  • 模式定义

    定义一系列算法,把他们一个个封装起来,并且使他们可互相替换 (变化) 。改模式使得算法可以独立于使用他的客户程序 (稳定) 而变化 (扩展,子类话)

Read more »