(1)概念

    • 代理就是帮别人做事情,如:工厂的中介,中介负责为工厂招收工人,那么中介就是工厂的代理;客户通过商家购买东西,商家向厂家购买货物,商家就是工厂的代理 。
    • 在开发中存在a类需要调用c类的方法,完成某一个功能,但是c禁止a调用。这时,可以在a和c之间创建一个b类代理,a类访问b类,b类访问c类。例如:登录的时候需要进行短信验证,这个时候代理就是中国移动的子公司来完成短信的发送功能。
    • 代理模式就是为其他对象提供一种代理来控制这个对象的访问,在某些情况下一个对象不适合或不能直接引用另一个对象,而代理对象可以在客户类和目标对象直接起到中介的作用。

    1、概念及作用 - 图1

    • 功能增强:其中目标对象实现真正的功能,但是代理对象可以对目标对象的功能做进一步的扩充。

    1、概念及作用 - 图2
    (2)设计模式
    设计模式代表了最佳的实践,通常被有经验的面向对象的软件开发者所采用的,它是开发中面临的一般问题的解决方案,这些解决方案是众多的软件开发人员经过相当长的实践的经验和错误总结出来的。

    (3)举例
    如果设计一个类该类中含有加减乘除四个方法,现在需要给每一个方法添加测试方法执行时间的代码,如果不使用代理的话,就需要对每一个方法进行修改,需要修改多次。违背了开闭原则(OCP,对扩展开放,修改关闭)和单一职责(SRP)。

    (4)作用
    功能增强:在原有的功能上增加额外的功能。
    控制访问:代理类不让你访问目标类。

    (5)实现代理的方式
    静态代理:代理类是自己手动创建的,所需要代理的目标类是确定的,实现简单容易理解。