DesignPattern- 代理模式

来源:互联网 发布:php 文件上传ajax代码 编辑:程序博客网 时间:2024/06/05 05:14
 

代理模式,应该是我在工作中用的最多的一种设计模式了。

 个人觉的这种设计模式能比较好的解耦和,特别是业务比较复杂的情况下。

     之前重构过这样一个系统,经过分解他有几大模块组成。

      我在接手这个项目的时候,它的代码完全已经在逻辑之外了。公司先后进来几个新人都跟我反馈,代码写的太难懂了。因为项目是由我来负责,老大那边直接来找我,再加上后来的bug已经多的不能修了,所以硬着头皮给重写了一下。用到了分层思想,MVC模式,回头来看,里面代码最有韵味的是代理模式了。

    在接触代理模式的时候,我记得曾经看过一句话,代理模式可以对真正的行为进行拦截。拦截这词用的比较专业,其实可以直接理解在调用真正行为的时候再加上一层逻辑,这里的逻辑可能就是你的业务了

    先上一张图:

            

 

 

  

  上代码:

      IAction:     

package com.jerome.designpattern.proxy;public interface IAction {/** * 根据actionId来执行对应的action. * @param actionId */public void doAction(int actionId);}


 

ActionProcessor:

package com.jerome.designpattern.proxy;public class ActionProcessor implements IAction {@Overridepublic void doAction(int actionId) {// TODO Auto-generated method stub//doaction......switch(actionId) {}}}


 

ActionProxy:

 

package com.jerome.designpattern.proxy;public class ActionProxy implements IAction {private IAction mActionProcessor ;public ActionProxy(IAction actionProcessor) {mActionProcessor = actionProcessor ;}@Overridepublic void doAction(int actionId) {// TODO Auto-generated method stub///////////////////////////////交付真正处理之前先预处理一下,这里一般跟软件的业务逻辑有一定的关系/////////////////////////////mActionProcessor.doAction(actionId);}}


 

     具体来说说在实践中是如何运用这种模式的。按照正常的逻辑,显示模块只负责显示,语音识别模块专门用于语音识别,播报模块只用来播报。首先对单个的模块定义好一系列接口,然后交由不同的开发来写实现。

   但是,一个系统并不是单单由独立的模块组成的,各个独立的模块组合进去,然后加上行业的业务逻辑就形成了一个软件。那我们这里的业务就是

   1.语音识别过程中停止正在播放音乐,语音识别结束开启被暂停的音乐

   2.语音识别过程中停止播报

   3.点击开始播报,若处在语音识别过程中终止本次语音识别

   .

   .

   .

   .

   这里的模块之间是有一系列的交互的。那么按照代理模式的特点来看,就跟 “拦截”有了一系列的关系,因为在单纯的做某一模块的事情之前,你需要处理本模块跟其他模块的交互(单纯的做语音识别之前,你需要暂停音乐模块的播放事件)。

 

   其实代理模式的一个最要的玩点就在于这个所谓的“拦截”。

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 大班社会领域怎么办教学反思 表带活动圈坏了怎么办 手表固针h掉了怎么办 cad图全部倒过来了怎么办 电脑打数字变粗怎么办 wps表格输入数字变乱码怎么办 文档中光标变粗怎么办 wps排序有重复的怎么办 记英语数字老是混怎么办 苹果手机输入法出数字怎么办 word文档复制过来有底色怎么办 表格复制后还再显示复制符号怎么办 笔记本字母键打出数字怎么办 wps打字字上移了怎么办 微信里黑圈里面的白字是怎么办 脖子比脸黑好多怎么办 河南许昌小学生生病办休学怎么办 1岁宝宝内向胆小怎么办 3岁宝宝内向胆小怎么办 数学物理好不喜欢学医怎么办 孩子眉毛太浓了怎么办 小娃一年级成绩太差怎么办 孩子晚上睡得晚怎么办 在深圳买房难小孩读书怎么办 上海小孩读书积分不够怎么办 读书时静不下心怎么办 初中生静不下心读书怎么办 孩子学习静不下心怎么办 退烧后体温35度怎么办 孩子体温34度多怎么办 宝宝感冒咳嗽流鼻涕出汗怎么办 养的小鸡总打架怎么办 小鸡一条腿瘸了怎么办 同窝小斗鸡打架怎么办 夏季羊长的慢怎么办 1岁吃母乳不吃饭怎么办 5个月宝宝黏妈妈怎么办 九个月宝宝不爱吃饭怎么办 20个月宝宝吐了怎么办 十个月的宝宝消化不好怎么办 两岁宝宝不爱喝水怎么办