用于保存公共成员变量的抽象类

时间:2014-12-08 21:43:27

标签: java abstract-class

我们可以使用抽象类来保存自动装配的公共成员变量。这是扩展抽象类的类,不需要再次声明成员字段。这是一个很好的设计模式吗?如果不是,有什么更好的方法来实现这一目标? 注意:抽象类没有任何方法。

abstract class Abs {  

    @autowired
    protected ClassA varA;  
    @Autowired
    protected ClassB varB;  
    @Autowired
    protected ClassC varC;  
    ...  
}

class My1 extends Abs {  

    public void methodA() {  
        //make call  
        varA.aCall()  
        varB.bCall()  
        varC.cCall()  
    }

1 个答案:

答案 0 :(得分:0)

由于您在评论中说“抽象类的唯一原因是保存公共共享成员变量”,因此没有理由为此目的使用抽象类继承。如果没有要求自动装配变量,我会说它们在接口中声明为public static final,这不需要实现,因为你可以静态地引用它们。由于它们确实需要自动装配,并且你不能自动装配静态变量,我建议将它们放在专用于保存变量的bean中,并将该bean作为需要它们的每个类中的局部变量,在那里你将使用抽象继承。这符合composition的模式,这是继承的一种更轻量级的替代方法。