从PureMvc 学 设计模式

 

 这个框架是一个 实现非常精简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.观察者

 

其中

  单例 是为了保证框架只有一个入口

 门面 是将整个系统功能整理处理 并提供一个小接口的API

 命令 实现Controller 与 处理逻辑的 解耦, 与 WEB MVC 中的 前端控制器一个意思   Struts 本就是可以实现 事件定义者 和处理者 解耦,命令模式 就是把接受者和处理逻辑放在Command里面 Command一般实现 execute   并在适当的时候被调用。

 

代理  实现了多业务逻辑的处理,并可以实现访问控制

 

中介者  中介者模式实现了 对显示组件一View 之间复杂关系的解耦

观察者  实现了通知机制,使得在 View 中注册的各种 观察者得到通知。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值