gpt4 book ai didi

java - 理解 JavaBeans 模式(抽象 getter 和 setter)

转载 作者:行者123 更新时间:2023-12-02 04:26:26 24 4
gpt4 key购买 nike

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

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 只是一个接口(interface):

public interface CreateService{
public Object create();
}

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

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

最佳答案

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

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

关于java - 理解 JavaBeans 模式(抽象 getter 和 setter),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32088557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com