这个框架是一个 实现非常精简MVC 框架 ,适用于 C/S 结构的程序。
框架的核心类有
Controller
View
Modle
Controller 中包含对View的引用 并且包含对 Map<String,Command>
String 是通知 类型的名字 ,Command 是对应的 命令操作
View 中有一个 Map<String,List<Command>>; Map<String ,Mediator>
Mediator 和 相应的 Command 都在 View 中注册,Mediator 用于管理 View 与视图之间的复杂性 ,其实 Mediator 可以直接注册在 Controller 中 ,View 的作用是
让 Mediator 和 Controller 解耦,。
Modle 则负责管理Proxy ,目的是 让 Command 与 Proxy 解耦
Command 的接受者其实就是 Proxy ,利用 Proxy 的逻辑来完成处理 。
Observer 模式 在这里 实现为 一个 Observer 需要定义 Ifunction 对象 来处理响应, Notifaction 定义传输的消息类型 ,Notifer 则是通知的发出者,用来通知各路观察者
是通过 facade 的 notifyObservers 方法, 而Observers 方法 有两个注册途径 一是在Controller 中注册Command ,另外就是 在View中注册Medaitor 。
Proxy 作为代理类 处理各种业务逻辑,可以进行访问控制? private Object data = null 这个属性我想是不是定义一个被代理类型的对象呢??
Facade 的应用 , Singleton 的应用 ,注意是多线程模式下, 实现方法是 同步了 静态方法 ,相当于在 class 对象上加锁了。
总的来说
IProxy ,Command ,Modle三个类实现了Notifier 接口 ,可以实现通知机制 , 在Controller 中实现了注册命令的功能,在View 中实现了注册Mediator 的功能, 在与组件交互上,Mediator 实现了 各种显示页面的可变性。
实际应用流程如下,
实现 Mediator 接口 , 在 Controller 中注册 关注的事件, 在 用户界面中事件出发 通过Model 交给 Proxy 处理 结果返回,并发出结果通知事件,来通知View 选择 适当的 Mediator 来显示组件。
个人猜想 Struts 应该也是类似的架构,不过应该复杂很多 ,所以 以后再分析 struts
。
上面利用了模式
1.单利
2.门面
3.命令
4.代理
5.中介者
6.观察者