日期:2014-05-20  浏览次数:20610 次

代理模式讨论
最近刚看了代理模式

代理类和操作类同时继承一个接口,实现同一个方法
客户端调用代理类,代理类做逻辑操作,然后再调用操作类
然后总结了2个问题,

1.这样的话感觉和我们平常用的三层很像 , 就少了接口这一层
那我们平常用的三层和代理类有什么区别呢

2.可不可以多个操作类和一个代理类继承同一个接口呢,
就是一对多。(个人想法:应该是代理类可以多个,操作类只能一个吧)

希望高手可以解答

------解决方案--------------------
UP
------解决方案--------------------
不懂。
------解决方案--------------------
这样说也没错啊..一个操作类,多个代理类,也可以是,对个操作类,对个代理类, 这不是一对一.一对多.多对多嘛.

------解决方案--------------------
要理解代理模式,关键在于理解什么是“代理”,什么接口的、什么操作的都是次要的。所谓“代理”就是“受委托代表当事人进行某种活动”。

在没有“代理”的情况下,“当事人”直接进行“某种活动”。
在有“代理”的情况下,“当事人”“委托”“代理人”“代表当事人进行某种活动”。

“代理模式”描述中的所谓的“客户端”实际上就是“当事人”,而“操作类”表示某种活动的需求接口,而“代理类”也就相当于“代理人”中界于“客户端”和“操作类”之间,暂时代表当事人承担职责。

当“当事人”不能或者不想直接进行某种活动时,一般需要代理人。当因环境等因素制约时,一般需要代理人。当需要对某种活动进行统筹管理时,一般也可设立代理人。
------解决方案--------------------
代理是将一个类在不改代码的情况下进行功能增强的选择,比如dao层仅负责提供操作数据库的服务,我们可使用代理将写入日志的服务加到dao层操作数据库之后,而不用把“写日志”这个和dao层职责没有直接关系的服务硬编码的加进来而导致其违反单一职责和降低重用度、增加耦合。他和我们所说的三层怎么分层,没多大关系,用了代理,模型层控制层渲染层这三层,照样得分出来。
------解决方案--------------------
期待,学习
------解决方案--------------------
为别人做嫁衣---代理模式
------解决方案--------------------
我觉得代理类相当于对操作类多了一层封装,首先代理本身就有个作用,是不把操作类的所有内容都暴露出来。操作类可以有多个属性,而对于客户端来说,我只想让客户端用我指定的操作,这样代理类就有其用武之地了。

多个操作类感觉是可以用一个代理类来对应的,代理类的逻辑操作不能通过某些逻辑来确定使用那个代理类的接口方法吗?

了解不是很深,一点愚见而已~~~