[DesignPattern]CompoundPattern

来源:互联网 发布:淘宝网怎样修改评价 编辑:程序博客网 时间:2024/06/05 05:21

复合模式

设计模式通常被一起使用,并被组合在同一个设计解决方案中。复合模式在一个解决方案中结合两个或多个模式,以解决一般或重复发生的问题。

与鸭共舞???

  • 从头建立鸭子模拟器。一个池塘各种鸭子在实现不同呱呱叫的方式。
  • 在模拟器中加入鹅对象,将鸭子和鹅掺杂在一起。(适配器模式)
  • 如何在不变化鸭子类的情况下,计算呱呱叫的次数?(装饰者模式)
  • 如何进行质量控制确保创建和装饰鸭子的过程?(工厂模式)
  • 巡逻员突然想管理一群鸭子。(组合模式)
  • 他又想持续追踪个别鸭子的实时呱呱叫,真是善变呢。(观察者模式)

我们做了什么?

我们从一大堆Quackable开始……
- 有一只鹅出现了,它希望自己像一个Quackable。
- 然后,呱呱叫学家决定要计算呱呱叫声的次数。
- 但是呱呱叫学家担心他们忘了加上QuackCounter装饰者。
- 又是鸭子,又是鹅,又是quackable的……我们有管理上的困扰。
- 当任何呱呱声想起时,呱呱叫学家都希望能被告知。

The King Model-View-Controller

复合模式之王
例如,利用MVC控制节拍。

MVC与WEB

Web开发人员也都在适配MVC,使它符合浏览器/服务器模型。我们称这样的适配为”Model 2”,并使用Servlet和JSP技术的结合,来达到MVC的分离效果,就像传统的GUI.
- 你发出一个会被Servlet收到的HTTP请求。
- Servlet扮演控制器。
- 控制器将控制权交给视图。
- 视图通过HTTP将页面返回给浏览器。
Model2不仅提供了设计上的组件分割,也提供了”制作责任”的分割。也就是说:许多网页制造者只懂内容和HTML,但是不懂软件。

要点

  • MVC是复合模式,结合了观察者模式,策略模式和组合模式。
  • 模型使用观察者模式,以便观察者更新,同时保持两者之间的解耦。
  • 控制器是视图的策略,视图可以使用不同的控制器实现,得到不同的行为。
  • 视图使用组合模式实现用户界面,用户界面通常组合了嵌套的组件,像面板、框架和按钮。
  • 这些模式携手合作,把MVC模型的三层解耦,这样可以保持设计干净又有弹性。
  • 适配器模式用来将新的模型适配成已有的视图和控制器。
  • Model2是MVC在Web上的应用。
  • 在Model2中,控制器实现成Servlet,控制器实现成Servlet,而JSP/HTML实现视图。