【问题标题】:Understanding JavaBeans pattern (Abstract getter and setter)理解 JavaBeans 模式(抽象 getter 和 setter)
【发布时间】:2015-08-19 07:01:00
【问题描述】:

我现在正在开发一个网络应用程序,并且有以下类层次结构:

public class AbstractCreator{

    public Object create(){
        getCreateService().crete();
    }

    public abstract CreateService getCreateService();

    public abstract void setCreateService(CreateService createService);

}

后代:

public class SubCreator extends Creator{

    @Named("subCreateService") //I prefer using that annotation
                                    // instead of the legacy @Autowired
    private CreateService createService;

    @Override
    public CreateService getCreateService() {
        return createService;
    }

    @Override
    public void setCreateService(CreateService createService) {
        this.createService = createService;
    }
}

public class MegaSubCreator extends Creator{

    @Named("megaSubCreateService") 
    private CreateService createService;

    @Override
    public CreateService getCreateService() {
        return createService;
    }

    @Override
    public void setCreateService(CreateService createService) {
        this.createService = createService;
}

CreateService 只是一个接口:

public interface CreateService{
    public Object create();
}

问题:我需要使用abstract class 中的服务,但有关服务的信息只能从我们执行注入的具体子类中获得。在这种情况下使用抽象 getter/setter 是否正确?

我的意思是,这与JavaBeans 模式不矛盾吗?

【问题讨论】:

    标签: java class interface javabeans


    【解决方案1】:

    我并不关心 JavaBeans 模式 - 只需重命名方法即可。

    也就是说,我认为模型本身对我来说似乎不合适。 AbstractCreator 需要CreatorService,因此CreatorService 应该是AbstractCreator 的一部分。 AbstractCreator 可以有一个以CreatorService 为参数的构造函数,并在子类中使用构造函数注入来设置它。

    【讨论】:

    • 确实,关于构造函数的想法听起来不错。谢谢。
    猜你喜欢
    • 2023-03-04
    • 1970-01-01
    • 2013-04-09
    • 2014-07-02
    • 1970-01-01
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多