美文网首页
Boolan 第十三周 设计模式(三)

Boolan 第十三周 设计模式(三)

作者: wild_horse | 来源:发表于2017-04-20 19:48 被阅读0次

状态变化模式

典型模式

  • State
  • Memento

1 state
目的是应对对象状态变化,行为也要随之变化,保持对象操作和状态转化之间的松耦合

State

State模式将所有与一个特定状态相关的行为都放入一个State的子类对象中,在对象状态切换时,切换相应的对象;但同时维持State的接口,这样实现了具体操作与状态转换之间的解耦。

2 Memento
Memento捕获对象的状态,在不破坏封装性的前提下,可以用于以后对象状态的恢复。关键是把状态封装成一个新对象,并与目标对象的接口相匹配。

Memento

"数据结构"模式

典型模式

  • Composite
  • Iterator
  • Chain of Resposiblility

1 Composite
定义:将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性(稳定)。

Composite

Leaf 和 Composite 有共同的基类,leaf是一种具体的实现,而Composite可以看出是同一类型的特殊容器。在Linux的文件系统中,普通文件是leaf,而目录文件是Composite,目录文件上记录的有当下目录的文件,也有下一层次的目录文件,组成了树状的文件结构。

2 Iterator
提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露(稳定)该对象的内部表示。

Iterator

这是一种间接访问而不破坏封装性的方式,与C++ STL的迭代器不同的是Iterator 使用的是面向对象的编程思想,而STL的迭代器是通过完整的范式编程体系,六大部件相互工作实现的,是C++ 精妙的地方,Iterator则显得有些过时了。

3 Chain of Resposibility
使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。

Paste_Image.png

第十三周的作业中使用了责任链的方案,把所有图形的handler 串在一个链上,若要画出不同图形的组合,构建好各自图形的请求,交于责任链处理,必然有一个节点可以实现所要求的图形,输入多个请求,即可以画出多种图形的组合。这样图形和相应的handler都是可以扩展的,保持请求发出者和操作实行的松耦合。

相关文章

  • Boolan 第十三周 设计模式(三)

    状态变化模式 典型模式 State Memento 1 state目的是应对对象状态变化,行为也要随之变化,保持对...

  • C++设计模式-第三篇 (Boolan)

    C++设计模式-第三篇 (Boolan) 本章内容:1 备忘录模式2 状态模式3 组合模式4 迭代器模式5 职责模...

  • C++设计模式-第一篇 (Boolan)

    C++设计模式-第一篇 (Boolan) 本章内容:1 面向对象设计原则2 GOF-23种设计模式分类3 模板方法...

  • 2018-03-22

    Boolan C++设计模式二 “对象创建”模式:通过“对象创建”模式绕开new,来避免对象创建(new)过程中所...

  • 2018-03-28

    Boolan C++设计模式三 “对象性能”模式:面向对象很好的解决了“抽象”的问题,但是必不可免地要付出一定的代...

  • C++设计模式-第二篇 (Boolan)

    C++设计模式-第二篇 (Boolan) 本章内容:1 工厂方法模式2 抽象工厂模式3 原型模式4 构建器模式5 ...

  • 设计模式第二周(boolan)

    前两种用的比较多 六。工厂方法模式(Factory Method) 接口抽象???指的是多态指针吗 面向接口的变成...

  • 2018-03-18

    Boolan C++设计模式一 设计模式:“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案...

  • 第十三周 C++设计模式 Boolan 李建忠

    “对象性能”模式 面向对象很好的解决了“抽象”的问题,但是不可避免地要付出一定的代价。对于通常情况来讲,面向对象的...

  • Boolan 设计模式_3

    ”对象性能“模式:解决对象创建代价问题 1. 单件模式 在整个系统中保证只存在一个实例。 构造函数和拷贝构造函数设...

网友评论

      本文标题:Boolan 第十三周 设计模式(三)

      本文链接:https://www.haomeiwen.com/subject/naglzttx.html