[英]Understanding JavaBeans pattern (Abstract getter and setter)
I'm working on a web-application now and have the following class hiereachy: 我现在正在开发Web应用程序,并且具有以下类层次结构:
public class AbstractCreator{
public Object create(){
getCreateService().crete();
}
public abstract CreateService getCreateService();
public abstract void setCreateService(CreateService createService);
}
Descendants: 子孙:
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;
}
}
and 和
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;
}
where CreateService
is just an interface: 其中
CreateService
只是一个接口:
public interface CreateService{
public Object create();
}
The problem : I need to use the service in the abstract class
but the information about the service is available only from concrete subclasses where we perform injection. 问题 :我需要在
abstract class
使用服务,但是有关服务的信息仅可从我们执行注入的具体子类中获得。 Is it correct to use abstract getter/setter in such circumstances? 在这种情况下使用抽象的getter / setter是否正确?
I mean, doesn't it contradict to the JavaBeans
pattern? 我的意思是,这与
JavaBeans
模式不矛盾吗?
I don't really bother about the JavaBeans
pattern - just renaming the methods will do. 我并不真正在意
JavaBeans
模式-重命名方法即可。
That said, I think the model itself doesn't seem right to me. 就是说,我认为模型本身对我来说似乎不合适。 An
AbstractCreator
requires CreatorService
and as such the CreatorService
should be part of the AbstractCreator
. AbstractCreator
需要CreatorService
,因此CreatorService
应该是AbstractCreator
一部分。 AbstractCreator
can have a constructor that takes CreatorService
as a parameter and use constructor injection in the subclasses to set it. AbstractCreator
可以具有一个将CreatorService
作为参数的构造函数,并在子类中使用构造函数注入对其进行设置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.