重温设计模式(一)—代理模式

  

    通过这次设计模式的交流,发现无论是技术上还是思想上需要提升的空间还有很多。收获比预期的要多的多。给我触动最深的就是以下几点:

    1、 面向对象的精华:抽象、封装、继承、多态

    2、设计模式六大原则的运用:单一职责、开闭原则、合成聚合、依赖倒装、里氏代换、迪米特

    3、让自己思绪飞翔—大胆的去想象,只有去想了、做了,你才知道最后的结果

   

    初次学习代理模式的博文:http://blog.csdn.net/gxq741718618/article/details/8781099

 

    下面用另外一种愉快的心情了解一下代理模式,你会有不一样的收获。

 

一、生活中的代理

  情景1:生产经济不发达的时候,我们所需的生活用品需要从遥远的地方购买,期间耗费了大量的人力和物力(那时真的很苦)。

重温设计模式(一)—代理模式_第1张图片

 

   情景2:随着生活水平的提高,我们的生活用品在周围的超市就可取得,方便了你我他。

重温设计模式(一)—代理模式_第2张图片

注:第一个sell()方法代表超市卖给顾客东西

   第二个sell()方法代表厂家买个超市东西

 

使用超市代理

  好处:

     顾客可以轻松购物,省时省力

  不足:

     产品的价格会受制于超市

 

二、定义

   为其他对象提供一种代理以控制对这个对象的访问。 

思考:

   1、Subject存在的必要性

       保证代理对象和真实对象的统一

   2、Real和Proxy可以扩展吗?

       real和Proxy成对扩展—静态代理

       多个real对象对应一个Proxy—动态代理

   3、客户端里有Proxy的引用,那客户端是不是只认识代理?

 

   现在我们接触到的实例都是客户端有代理的引用,但接触过动态代理的就会有不同的想法,在动态代理中客户端是不认识Proxy的。

 

通过上面这些思考,我们必须认清下面几点:

    1、必须站在巨人的肩膀上去学习,不是你以为的就是你以为的,我们需要探索的还有很多

    2、多交流、多暴露问题

 

三、项目运用

    举一个登录的实例,其中登录用到了事务。事务包含:打开连接、打开事务、提交事务、关闭连接

重温设计模式(一)—代理模式_第3张图片

问题一:业务逻辑和事务放在一起,不符合分层的思想啊!那怎么办,静态代理的引入!

 重温设计模式(一)—代理模式_第4张图片

解决的问题:解耦

带来的问题:大量重复代码

重温设计模式(一)—代理模式_第5张图片

问题二、我每个用事务的功能都要写一个这样的代理事务,大量的重复代码,动态代理的引入!

重温设计模式(一)—代理模式_第6张图片

解决问题:抽象封装

 

四、总结

    通过上面的步步深入和抽象,我们对设计模式肯定有了一个重新的认识。不要让设计模式固定了我们的思维,有好多东西我们都需要接触才能对设计模式有了更深刻的认识。

 

    博文只是代表了个人的一些理解,如有不足,请指出,互相交流进步!

你可能感兴趣的:(【设计模式】)