关于Java中重写的查询
假设我有这样一个界面:关于Java中重写的查询,java,Java,假设我有这样一个界面: public interface Test { //Basically life cycle methods public void beforeStart(); public void start(); public void end(); } public abstract class TestAdapter implements Test { private AbstractPojo myPojo; protected voi
public interface Test {
//Basically life cycle methods
public void beforeStart();
public void start();
public void end();
}
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
}
还有一个抽象类,它为所有方法提供基本的或空的实现
public abstract class TestAdapter implements Test {
//Implementations here
}
因此,扩展TestAdapter
的客户端可以覆盖一个或所有生命周期方法。我要求每个使用者都应该扩展TestAdapter
类,他们可以覆盖TestAdapter
中的所有或一个或一个生命周期方法
但问题是,TestAdapter
的每个使用者都会创建一个POJO类的实例,应该为其管理生命周期,即beforeStart()
等
我的问题是:
testAdapter
实现类中引用用户创建的POJO。我怎样才能继续实施这个注意:如果您觉得我正在尝试重新发明轮子,您能为上述要求提供任何替代方案吗?您可以在控制POJO对象的方法中使用参数。
另一方面,有很多现成的框架可以使用,而不是创建自己的框架,为什么还要再发明轮子呢?这个问题是“一步一步地创建对象”。这是一个解决办法
下面是用java实现构建器模式的示例 首先,我认为您应该使用注释,正如您在大多数测试框架中看到的那样:
@BeforeClass
public void beforeClass() {
// code here
}
@BeforeMethod
public void beforeMethod() {
// code here
}
如果你真的想坚持继承,你可以这样做:
public interface Test {
//Basically life cycle methods
public void beforeStart();
public void start();
public void end();
}
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
}
在这种情况下,您可以在内部控制应该发生什么,并让用户根据自己的需要覆盖界面中的方法。POJO和testAdapter有何关联?它是testAdapter的成员还是testAdapter的改编?@HimanshuBhardwaj testAdapter包含POJO生命周期的空/一些默认实现,客户端通过扩展testAdapter类来提供这些实现。如果我必须为POJO实现一种生命周期机制,首先,我的POJO中有一个属性,它保存当前的LifeCycleState。在您的案例中,我会有一个公共类testAdapter或其扩展来管理生命周期,并且状态将是枚举的一部分,这样所有的用户都不会以自己的方式来处理它。您可以在方法中有一个参数来控制POJO对象。您能详细说明一下吗?谢谢,但我有一些POJO,客户机将通过扩展抽象类来提供它。所以我的问题是,我怎样才能把这个引用传递给上面所有的同学?或者我应该首先在抽象类中创建某种对象,并将客户机提供的pojo传递给它?可能吗?您可以在抽象类中创建一个get/setPojo方法,并在那里为其创建一个字段。因此,在实现中,用户可以使用setPojo(myPojo),父类将看到引用。这就是你想要的吗?我想你是对的。所以父类可以使用它引用,并且客户端提供的值对它是可见的?谢谢,我认为这有点接近我的解决方案,但我将等待更多的答案:)