You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Storage、System等多类间的指定通信流程?

能否实现指定的类间通信流程?如何实现?

完全可以实现这个流程,通过类的继承关系、内部类设计以及依赖委托的方式,能够严格遵循你设定的通信规则。

核心实现思路

  1. 利用继承关系让System继承Storage,ReadSystem作为System的内部子类继承System,保证ReadSystem能访问Storage的属性
  2. 利用委托机制让ManagerSystem仅与System交互,System仅与内部子类ReadSystem交互,严格遵守通信限制
  3. 通过依赖注入完成类实例的关联,确保调用链的完整性

具体代码实现(以Java为例)

1. Storage类:数据容器

public class Storage {
    private String name;

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

    // 仅暴露给ReadSystem的获取方法
    public String getName() {
        return this.name;
    }
}

2. System类:子系统容器,委托ReadSystem处理数据获取

public class System extends Storage {
    private ReadSystem readSystem;

    public System(String name) {
        super(name);
        this.readSystem = new ReadSystem();
    }

    // 对外提供的获取名称入口,自身不直接操作Storage
    public String fetchName() {
        return readSystem.getStorageName();
    }

    // ReadSystem作为System的内部子类,继承System
    public class ReadSystem extends System {
        public ReadSystem() {
            // 复用外部System的Storage属性值
            super(System.this.getName());
        }

        // 从Storage(父类的父类)获取名称
        public String getStorageName() {
            return super.getName();
        }
    }
}

3. ManagerSystem类:统一入口,仅与System通信

public class ManagerSystem {
    private System system;

    // 通过构造注入System实例
    public ManagerSystem(System system) {
        this.system = system;
    }

    // 用户调用的入口方法
    public String GetName() {
        // 仅与System交互,触发后续调用链
        return system.fetchName();
    }
}

4. 测试验证

public class Main {
    public static void main(String[] args) {
        // 初始化系统
        System system = new System("Alice");
        ManagerSystem manager = new ManagerSystem(system);
        
        // 用户发起获取名称请求
        String userName = manager.GetName();
        System.out.println(userName); // 输出:Alice
    }
}

流程验证(匹配你的示例步骤)

  1. 用户调用ManagerSystem.GetName()方法发起请求
  2. ManagerSystem调用持有的System实例的fetchName()方法,传递获取名称的需求
  3. System调用内部子类ReadSystem的getStorageName()方法,委托其完成数据获取
  4. ReadSystem从父类的父类Storage中读取Name属性并返回,最终传递回用户

符合通信限制说明

  • ManagerSystem仅与System交互,未直接调用Storage的任何方法
  • System仅与内部子类ReadSystem交互,自身未直接访问Storage的属性或方法(即使继承了Storage,也完全通过委托实现)

内容的提问来源于stack exchange,提问作者Poinet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 20:00:58