zoukankan      html  css  js  c++  java
  • 代理模式(也称委托模式)

    代理模式是软件设计模式中的一项基本技巧。在代理模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。代理模式是一项基本技巧,许多其他的模式,如状态模式、策略模式、访问者模式本质上是在更特殊的场合采用了代理模式。代理模式使得我们可以用聚合来替代继承

    Java例子

    通过使用接口委托可以做到类型安全并且更加灵活。在这个例子里,类C可以委托类A或类B,类C拥有方法使自己可以在类A或类B间选择。因为类A或类B必须实现接口I规定的方法,所以在这里委托是类型安全的。这个例子显示出委托的缺点是需要更多的代码。

    interface I {
         void f();
         void g();
     }
     
     class A implements I {
         public void f() { System.out.println("A: doing f()"); }
         public void g() { System.out.println("A: doing g()"); }
     }
     
     class B implements I {
         public void f() { System.out.println("B: doing f()"); }
         public void g() { System.out.println("B: doing g()"); }
     }
     
     class C implements I {
         // delegation
         I i = new A();
     
         public void f() { i.f(); }
         public void g() { i.g(); }
     
         // normal attributes
         public void toA() { i = new A();//此处加 增强处理?AOP代理?}
         public void toB() { i = new B(); }
     }
     
     
     public class Main {
         public static void main(String[] args) {
             C c = new C();
             c.f();     // output: A: doing f()
             c.g();     // output: A: doing g()
             c.toB();
             c.f();     // output: B: doing f()
             c.g();     // output: B: doing g()
         }
     }


    A让B代表他去追C女生,B就是代理对象,送礼物等动作都是B做的,但是他的方法实际都是调用的是A的方法

    “代理模式其实就是在访问对象时引入一定程度的间接性,因为这种间接性,可以附加多种用途。”

    Spring AOP实现就是使用AOP代理对象来完成的,AOP方法=增强处理+目标对象的方法


  • 相关阅读:
    关于产品
    Windows服务 + Quartz.NET
    C#
    C#
    URL
    前端生态系统总结
    字符串相似度
    Process Explore & Windbg
    webpack
    JS
  • 原文地址:https://www.cnblogs.com/gaoxiangde/p/4320749.html
Copyright © 2011-2022 走看看