设计模式--代理模式

2017-09-20  本文已影响2人  AndroidTony

1 定义

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

2 类图

代理模式基本类图

代理类与实体类都继承自同一接口,代理类持有实体类的引用,通过调用代理类的方法,实现对实体类的调用。Subject类可以是接口,也可以是抽象类。

3 实质

代理模式的实质是:在不改变原有代码(或不知道)的基础上,在方法的前后加强逻辑
例子1:代理玩游戏,根据游戏时间收费。或者对jar包中的类方法在调用前后打log。
例子2:打官司要找律师,你只需要完成自己的答辩,其它事前调查、事后追查都交给律师搞定,减轻负担。

4 代码

interface IRun {
    public void run();
}

class Person implements IRun{
    public void run() {
        System.out.println("person running.....");
    }
}

class PersonProxy implements IRun{
    private Person person;
    PersonProxy(Person person){
        this.person = person;
    }
    public void run() {
        //运行之前的处理
        person.run();
        //运行之后的处理
    }
}

5 使用场景

6 优点

7 缺点

普通代理只能代理固定接口的实现类。

上一篇 下一篇

猜你喜欢

热点阅读