你可以创建一个Dispatcher
接口只定义了一个方法dispatch(String)
(或任何你试图实现的目标)。基类(ClassB)使用 NullPattern 实现该接口,而子类(ClassC)根据您的需要实现该接口。
界面非常简单:
public interface Dispatcher
{
public void dispatch(String message);
}
NullPattern 的实现如下:
public class NullDispatcher implements Dispatcher
{
public void dispatch(String message)
{
// do nothing
}
}
ClassB 应该这样修改:
public class ClassB
{
private Dispatcher dispatcher;
public ClassB()
{
dispatcher = new NullDispatcher();
}
public void setDispatcher(Dispatcher dispatcher)
{
// change this to your needs
if (dispatcher == null)
dispatcher = new NullDispatcher();
else
this.dispatcher = dispatcher;
}
@Test
public void myTest()
{
ClassA a = new ClassA();
a.createRequest();
String test = a.getResponse();
dispatcher.dispatch(test);
}
}
这里有一个新的Dispatcher
可以使用设置setDispatcher(Dispatcher)
方法。该调度程序将用于myTest
发送结果a.getResponse()
.
扩展类只需要设置具体的实现即可Dispatcher
。 F.e.要打印对控制台的响应,您可以实现ConsoleDispatcher
像这样:
public class ConsoleDispatcher implements Dispatcher
{
public void dispatch(String message)
{
System.out.println(message);
}
}
要使用ConsoleDispatcher
而不是NullDispatcher
in ClassC
您可以使用类似于以下的代码:
public class ClassC extends ClassB
{
public ClassC()
{
this.setDispatcher(new ConsoleDispatcher());
}
}
随着 ClassC 扩展 ClassB,您将可以访问myTest
它使用定义的调度程序来相应地调度消息。
HTH