抽象代理模式2.0版本

前言:

1.0版本的核心

代理的定义 = A proxy, in its most general form, is a class functioning as an interface to something else. The proxy could interface to anything: a network connection, a large object in memory, a file, or some other resource that is expensive or impossible to duplicate. In short, a proxy is a wrapper(封装) or agent object that is being called by the client to access the real serving object behind the scenes

The Proxy design pattern allows you to provide an interface to other objects by creating a

wrapper(封装) class as the proxy. The wrapper class, which is the proxy, can add additional

functionality to the object of interest without changing the object's code.

翻译:代理,在其最普遍的形式中,是一个作为与其他事物接口的类。代理可以连接任何接口:网络连接、内存中的大型对象、文件,或者其他昂贵或难以复制的资源。简而言之,代理是客户端(主语)调用的封装器或代理对象,(目的)用于访问幕后真正的业务对象

代理设计模式允许你通过创建一个封装类作为代理,为其他对象提供接口。作为代理的封装类可以在不更改对象代码的情况下为其添加额外的功能,而无需更改对象的代码。

1.封装类

举个例子就知道了,封装了一个产品的名字

java 复制代码
package proxy;

public class wrapper {
    private String name;

    public wrapper(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return name;
    }
}

你可能觉得,封装类很像实体类,并不然,封装类其实是实体类的上一级

2.0的全新核心

单一产品

多个产品

正片:

单一产品

第一步:新建一个封装类(产品)

结构组成:私有访问变量 + 有参构造 + toStiring方法(函数)重构

第二步:新建一个业务对象(代理商)

java 复制代码
package proxy;

public class wrapperIMP {
    public void enter(wrapper wrapper) {
        System.out.println(wrapper + " 欢迎来到站长的自言自语.");
    }
}

结构组成:无返回值enter方法

第三步:一个封装类作为代理(代理人)

java 复制代码
public class wrapperR extends wrapperIMP {

    private static final int NUM_WIZARDS_ALLOWED = 3;

    private int i;

    @Override
    public void enter(wrapper wrapper) {
        if (i < NUM_WIZARDS_ALLOWED) {
            super.enter(wrapper);
            i++;
        } else {
            System.out.println(wrapper + "哈哈害!");
        }
    }
}

结构组成:继承wrapperIMP + 重构了父类的enter方法 (条件判断 )

第四步:模仿接口传入值

java 复制代码
public class app {
    public static void main(String[] args) {

        wrapperR tower = new wrapperR();
        tower.enter(new wrapper("小红"));
        tower.enter(new wrapper("小明"));
        tower.enter(new wrapper("小黄"));
        tower.enter(new wrapper("小白"));
        tower.enter(new wrapper("小黑"));
    }
}

结构组成:new 一个代理人当成变量 + 调用代理人的enter方法

第五步运行:

发现没,代理模式中,我们的代码是全程一直走的,直到结束

相关推荐
Auc242 天前
OJ判题系统第4期之判题机模块架构——设计思路、实现步骤、代码实现(工厂模式、代理模式的实践)
java·spring cloud·log4j·mybatis·代理模式·工厂模式
Yang三少喜欢撸铁3 天前
【阿里云免费领取域名以及ssl证书,通过Nginx反向代理web服务】
nginx·阿里云·代理模式·ssl
Blurpath4 天前
什么是静态住宅IP?为什么静态住宅IP能提高注册通过率?
网络·代理模式·ip代理·住宅ip
python算法(魔法师版)4 天前
JavaScript性能优化实战,从理论到落地的全面指南
开发语言·性能优化·前端框架·代理模式
常某某的好奇心7 天前
代理模式(Proxy Pattern)
代理模式
彬彬醤7 天前
全局网络:重构数字时代的连接范式
运维·服务器·网络·数据库·重构·代理模式
菜鸟破茧计划10 天前
穿越数据森林与网络迷宫:树与图上动态规划实战指南
网络·动态规划·代理模式
yy鹈鹕灌顶12 天前
动态规划算法精解(Java实现):从入门到精通
代理模式
帝锦_li13 天前
Java进阶--设计模式
观察者模式·单例模式·代理模式·抽象工厂模式·适配器模式·原型模式
工业甲酰苯胺16 天前
用远程代理模式轻松实现远程服务调用,打开编程新大门
代理模式