您当前的位置:首页 > 文章 > 设计模式 -- 代理模式(Proxy P

设计模式 -- 代理模式(Proxy Pattern)

作者:小铁-Android 时间:2023-11-22 阅读数:121 人阅读
代理模式:一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。 在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。
介绍
意图:为其他对象提供一种代理以控制对这个对象的访问。
主要解决问题:在直接访问对象时带来的问题,直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。
关键代码:实现与被代理类组合。
优点:1、职责清晰。 2、高扩展性。 3、智能化。
缺点:1、由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。 2、实现代理模式需要额外的工作,有些代理模式的实现非常复杂。
示例
以绘制 三角形、圆形、矩形功能为例:

定义接口
public interface Draw {
    void circularAction();
    void rectangleAction();
    void triangleAction();
}
实现类
 
public class RealDraw implements Draw {
    @Override
    public void circularAction() {
        //绘制圆形
    }
 
    @Override
    public void rectangleAction() {
        //矩形
    }
 
    @Override
    public void triangleAction() {
        //三角形
    }
}

代理类
public class ProxyDraw implements Draw {
    private RealDraw realDraw;
 
    @Override
    public void circularAction() {
        if(realDraw == null){
            realDraw = new RealDraw();
        }
        realDraw.circularAction();
    }
 
    @Override
    public void rectangleAction() {
        if(realDraw == null){
            realDraw = new RealDraw();
        }
        realDraw.rectangleAction();
    }
 
    @Override
    public void triangleAction() {
        if(realDraw == null){
            realDraw = new RealDraw();
        }
        realDraw.triangleAction();
    }
}

使用
    public static void main(String[] args) {
        ProxyDraw proxyDraw = new ProxyDraw();
        proxyDraw.circularAction();
        proxyDraw.rectangleAction();
        proxyDraw.triangleAction();
    }
————————————————
版权声明:本文为CSDN博主「小铁-Android」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_50675668/article/details/134401811

本站大部分文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。

如果侵犯了您的权益请来信告知我们删除。邮箱:1451803763@qq.com