大话设计模式-代理模式

代理模式

Spring AOP就是使用的动态代理

概念:在代理模式(Proxy Pattern)中,一个类代表另一个类的功能,创建具有现有对象的对象,以便向外界提供功能接口

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

主要解决:在直接访问对象时带来的问题

何时使用:想在访问一个类时做一些控制

如何解决:增加中间层

关键点:实现与被代理类组合

应用实例:Windows里面的快捷方式。买火车票不一定去火车站买,也可以去代售点买

优点
1.职责清晰
2.高扩展性
3.智能化

缺点
1.由于在客服端和真实主题之间增加了代理对象,因此处理速度会变慢
2.实现代理模式需要额外的工作,有些代理模式的实现非常复杂

使用场景
远程代理、虚拟代理、Copy-on-Write代理、保护代理、Cache代理、防火墙代理、同步化代理、智能引用代理

实现

package Proxy;

public interface Company {

	//讨债
    void getMoney();
}
package Proxy;

public class Human implements Company {
    @Override
    public void getMoney() {
        System.out.println("200W");
    }
}

package Proxy;

public class Person implements Company {
    @Override
    public void getMoney() {
        System.out.println("当事人100W");
    }
}

package Proxy;

public class Proxy implements Company {

    Company company;

    public Proxy(Company company){
        this.company = company;
    }

    @Override
    public void getMoney() {
        //执行Person类的方法
        company.getMoney();
    }
}

package Proxy;

public class Test {

    public static void main(String[] args) {

        Company company = new Human();
        Company proxy = new Proxy(company);
        proxy.getMoney();
    }
}

你可能感兴趣的:(设计模式,设计模式,java)