设计模式系列之复合模式【十三】

1. 定义

将多个模式结合起来形成一个“框架”,以解决一般性问题。在形式上,复合模式是多个模式的组合,但是多个模式的组合并不一定是复合模式。

例如:MVC是一个经典的复合模式

2. 传统MVC分析

MVC即模型Model、视图View、控制Controller,各自的职责是:

  • Model:负责封装实体以及实体间相关的应用逻辑;
  • View:负责展示;
  • Controller:负责封装控制逻辑,整合Model和View

MVC的最大优点就是把表现层View与模型Model分离,实现了设计上的松耦合。

MVC主要复合了如下模式:

  • 观察者模式:V和C都是M的观察者(Model的状态更新要及时通知V更新视图,或者通知C做相应逻辑处理)
  • 策略模式:View与Controller是策略模式关系,Controller提供策略
  • 组合模式:View以组合模式管理控件(调用顶层容器的repaint方法,容器内的所有组件都会重绘)

3. 传统MVC与Java程序的MVC

传统MVC中具体的应用逻辑都被包含在M里面,也就是说,模型对象不仅具有一系列属性(和getter, setter)还要有相关的数据处理方法。

这与Java程序中的MVC不同,在Java程序中我们通过建包package来对代码结构进行分层,一般是这样做的:

  • M:vo(value object),值对象
  • V:default,默认包,UI层
  • C:service(服务层),dao(data access obj)数据访问对象,core(核心层,包含公共方法和公共常量)

说明:

  • vo包(也作bean、entity包)里面一般都是各个实体抽象出来的类(包含各个实体的属性及其对应的getter和setter,不含应用逻辑)
  • dao和core都是service的辅助层,三层共同映射为Controller

Java本地程序的MVC与传统MVC的最大区别就是Java中的M更纯粹(干净),不含任何应用逻辑,几乎所有的逻辑都被装到了Controller里面

你可能感兴趣的:(java)