了解 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
作为参数的构造函数,并在子类中使用构造函数注入来设置它。
我现在正在开发一个 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
作为参数的构造函数,并在子类中使用构造函数注入来设置它。