了解 JavaBeans 模式(摘要 getter 和 setter)

Understanding JavaBeans pattern (Abstract getter and setter)

我现在正在开发一个 Web 应用程序并具有以下 class 层次结构:

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中的服务,但有关该服务的信息仅可用来自我们执行注入的具体子classes。在这种情况下使用 abstract getter/setter 是否正确?

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

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

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