设计模式之代理模式--静态代理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/txksnail/article/details/81211235

不断学习是为了有一天可以蜕变成自己想成为的人!

1、代理模式介绍

代理模式也成为委托模式,是结构性设计模式。
代理在生活中非常常见,举个例子,大家生活中经常听说到运营代理商,我们去运营代理商哪儿跟他说充话费,然后运营代理商一顿操作,给我们充上了话费。实际上真正给我们充话费的是运营商而不是运营代理商,运营代理商只是帮助我们访问了运营商,这就是一个典型的代理模式!

2、代理模式的定义

为其他对象提供一种代理以控制对真实对象的访问。
理解:代理模式核心是控制访问

3、代理模式使用场景

1、当我们无法直接访问一个对象的时候,可以使用代理间接访问
2、不想让某个对象被直接访问

4、代理模式UML类图

这里写图片描述

代理模式中角色:
1、被代理者抽象
UML中的Subject
2、被代理者
UML图中的RealSubject
3、代理者
UML图中的Proxy

5、代理模式的示例

//被代理类抽象
public interface IMobileOperator {

    /**
     * 充值
     *
     * @param count 充值的数量
     */
    void recharge(int count);
}

//被代理类
public class MobileOperator implements IMobileOperator {

    @Override
    public void recharge(int count) {
        System.out.println("运营商充值金额:"+count);;
    }
}

//代理类
public class Proxy implements IMobileOperator {
    private IMobileOperator mobileOperator;

    public Proxy(IMobileOperator mobileOperator) {
        this.mobileOperator = mobileOperator;
    }

    @Override
    public void recharge(int count) {
        mobileOperator.recharge(count);
    }
}


//调用类
public class Client {
    public static void main(String[] args) {
        IMobileOperator mobileOperator = new MobileOperator();
        Proxy proxy = new Proxy(mobileOperator);
        //代理类来对真实对象进行访问
        proxy.recharge(50);
    }
}

6、Android中代理模式的使用

这里写图片描述

被代理类抽象:IActivityManager
被代理类:ActivityManagerNative是一个抽象类,实现是ActivityManagerService
所以被代理类是ActivityManagerService
代理类:ActivityManagerProxy

7、代理模式的优缺点

代理模式应用广泛,几乎没有什么缺点

猜你喜欢

转载自blog.csdn.net/txksnail/article/details/81211235