考虑我有这样的界面:
public interface Test {
//Basically life cycle methods
public void beforeStart();
public void start();
public void end();
}
还有一个抽象类,它为所有方法提供基本或空的实现。
public abstract class TestAdapter implements Test {
//Implementations here
}
因此,扩展TestAdapter
的客户端可以覆盖一个或所有生命周期方法。我强制要求每个消费者都应该扩展TestAdapter
类,并且他们可以覆盖TestAdapter
中的全部或部分或全部生命周期方法。
但问题是TestAdapter
的每个消费者都创建了一个POJO类的实例,应该为其管理生命周期,即beforeStart()
等。
我的问题是:
testAdapter
实现类中创建了POJO。我该如何着手实施?如果您需要更多相关说明,请与我们联系。
编辑: 注意:如果您觉得我正在尝试重新发明轮子,您是否可以为上述要求提出任何替代方案?
答案 0 :(得分:1)
您可以在方法中使用参数来控制 POJO 对象 另一方面,有很多现成的框架可以使用而不是创建自己的框架,为什么要再次发明轮子呢?
答案 1 :(得分:1)
此问题是“逐步创建对象”。这由Builder Pattern解决。
这是java中用于实现Builder模式的another example。
答案 2 :(得分:1)
首先,我认为你应该使用注释,正如你在大多数测试框架中看到的那样:
@BeforeClass
public void beforeClass() {
// code here
}
@BeforeMethod
public void beforeMethod() {
// code here
}
如果你真的想坚持继承,你可以这样做:
public abstract class TestAdapter implements Test {
private AbstractPojo myPojo;
protected void doBeforeStart(){
// do something which you always want to happen
beforeStart();
}
protected void doStart() {
start();
}
protected void doEnd() {
end();
}
// your empty implementations of Test here
// getter and setter for myPojo
}
在这种情况下,您可以在内部控制应该发生的事情,让您的用户在他们认为合适时覆盖界面中的方法。