首页 > 代码库 > 重温设计模式(一)—代理模式
重温设计模式(一)—代理模式
通过这次设计模式的交流,发现无论是技术上还是思想上需要提升的空间还有很多。收获比预期的要多的多。给我触动最深的就是以下几点:
1、 面向对象的精华:抽象、封装、继承、多态
2、设计模式六大原则的运用:单一职责、开闭原则、合成聚合、依赖倒装、里氏代换、迪米特
3、让自己思绪飞翔—大胆的去想象,只有去想了、做了,你才知道最后的结果
初次学习代理模式的博文:http://blog.csdn.net/gxq741718618/article/details/8781099
下面用另外一种愉快的心情了解一下代理模式,你会有不一样的收获。
一、生活中的代理
情景1:生产经济不发达的时候,我们所需的生活用品需要从遥远的地方购买,期间耗费了大量的人力和物力(那时真的很苦)。
情景2:随着生活水平的提高,我们的生活用品在周围的超市就可取得,方便了你我他。
注:第一个sell()方法代表超市卖给顾客东西
第二个sell()方法代表厂家买个超市东西
使用超市代理
好处:
顾客可以轻松购物,省时省力
不足:
产品的价格会受制于超市
二、定义
为其他对象提供一种代理以控制对这个对象的访问。
思考:
1、Subject存在的必要性
保证代理对象和真实对象的统一
2、Real和Proxy可以扩展吗?
real和Proxy成对扩展—静态代理
多个real对象对应一个Proxy—动态代理
3、客户端里有Proxy的引用,那客户端是不是只认识代理?
现在我们接触到的实例都是客户端有代理的引用,但接触过动态代理的就会有不同的想法,在动态代理中客户端是不认识Proxy的。
通过上面这些思考,我们必须认清下面几点:
1、必须站在巨人的肩膀上去学习,不是你以为的就是你以为的,我们需要探索的还有很多
2、多交流、多暴露问题
三、项目运用
举一个登录的实例,其中登录用到了事务。事务包含:打开连接、打开事务、提交事务、关闭连接
问题一:业务逻辑和事务放在一起,不符合分层的思想啊!那怎么办,静态代理的引入!
解决的问题:解耦
带来的问题:大量重复代码
问题二、我每个用事务的功能都要写一个这样的代理事务,大量的重复代码,动态代理的引入!
解决问题:抽象封装
四、总结
通过上面的步步深入和抽象,我们对设计模式肯定有了一个重新的认识。不要让设计模式固定了我们的思维,有好多东西我们都需要接触才能对设计模式有了更深刻的认识。
博文只是代表了个人的一些理解,如有不足,请指出,互相交流进步!