首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java :继承与基本设计优化

Java :继承与基本设计优化
EN

Stack Overflow用户
提问于 2017-01-04 07:56:41
回答 1查看 89关注 0票数 0

我有一个Java服务,它具有以下方式使用的继承。Java服务以Json作为输入,对其进行处理,然后返回Json。处理分布在像B和C这样的类中,A创建它们的对象并完成它们的工作。我没有将inputJson传递给B和C,而是将它存储在容器类中,以便容器的子类能够很容易地使用它。

我相信有更好的方法来重新设计它。请指点。(注意:在现实中,有更多的类,如B、C和容器包含更多doB1()和doC1()等使用的属性)

代码语言:javascript
复制
//Pseudo
Class Main(){

    public static void main(String[] args)
    {
        return new A().a1(inputJson);   
    }

}

Class Container{
    JsonNode input;
    JsonNode output;
}

Class A extends Container{

    private JsonNode a1(inputJson)
    {
        input = inputJson;

        B bObject = new B();
        bObject.doB1();

        C cObject = new C();
        cObject.doC1();

        return output;
    }

}

Class B extends Container{
    public void doB1()
    {
        //prepares and updates part of output using input
    }
}

Class C extends Container{
    public void doC1()
    {
        //prepares and updates part of output using input
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-04 08:10:02

也许这就是您所要寻找的,它消除了您需要的单个容器超类。使用它可以像C.process(B.Process(A.create()));一样简单

当然,您需要确保每个类都返回一个JsonNode,但是该功能似乎已经存在,可以看到您的容器。

代码语言:javascript
复制
interface Processor {
    public JsonNode process(JsonNode input);
}

Class A {
    public JsonNode create() {...}
}

Class B implements Processor {
    public JsonNode process(JsonNode input) {
        // logics
        return output;
    }
}

Class C implements Processor {
    public JsonNode process(JsonNode input) {
        // logics
        return output;
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41458815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档