我有一个抽象类A,它包含两个函数,都是实现的
public void entry(){}
public void exit(){}
这些是在内部进行系统调用,我想在某些情况下避免这些调用。我正在编写一个测试(单独的类),我将自己进行调用,但我不想干扰代码的正常运行。我可以通过哪些方式实现这一目标?
我想到的一种方法是使用这两个函数创建一个接口B,并在实现此接口并包含实际代码的抽象类中创建一个类C.在抽象类中,我将有一个函数来设置我想要使用的接口实例化。例如:
public static void setMockProvider(B provider) {
if (provider != null) {
mockProvider = provider;
} else {
mockProvider = new C();
}
}
然后在调用入口和出口函数的任何地方,我都会做一个mockProvider.entry()和mockProvider.exit()
答案 0 :(得分:1)
我建议就像你说的那样。用这两种方法建立一个接口。并在需要不同实现的地方覆盖它们。
界面
public interface Interface
{
void methodA();
}
A类(抽象类)
public class A : Interface
{
void methodDescision(T parameter)
{
if(parameter != null)
{
methodA();
}else{
var YourInnerClass YIC = new YourInnerClass();
YIC.methodA();
}
}
@Override
methodA(){
// do default stuff
}
public class YourInnerClass
{
@Override
methodA(){
//do user defined stuff
}
}
}
B班(其他班级)
public class B : Interface
{
@Override
void methodA()
{
//your new implementation of that method
}
}
确保在两个类中实现接口。
希望这会有所帮助。
喝彩!
答案 1 :(得分:0)
不完全确定我是否完全理解了这个问题,但是你想在不干扰方法基础的情况下进行自己的调用(我假设它们是被继承的)?
如果是这样,你可以进行super()调用,super会调用你继承的类的方法。
@Override
public void entry() {
super();
//Your code
}