java:继承与基本设计优化

iklwldmw  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(269)

我有一个javatcp服务,它以下面的方式使用继承。java服务将json作为输入,对其进行处理,然后返回一个json。处理是跨类分布的,比如b和c。a创建他们的对象并完成他们的工作。我没有将inputjson传递给b和c,而是将其存储在容器类中,以便容器的子类可以轻松地使用它。
我相信有更好的方法重新设计它。请引导(注意:在real中,有更多的类,如b、c和container,它们包含更多dob1()和doc1()等使用的属性

//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
    }
}
nsc4cvqm

nsc4cvqm1#

也许这就是你想要的,它消除了你需要的单容器超类。使用它可以简单到 C.process(B.Process(A.create())); 当然,您需要确保每个类都返回一个 JsonNode ,但该功能似乎已经存在于您的容器中。

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;
    }
}

相关问题