当originalMethod_X被调用时,从TempClass_A,TempClass_B和TempClass_C中随机选取出目标实例类,若随机的结果为TempClass_A,则将TempClass_A作为目标实例类;
时间: 2024-10-13 20:10:40 浏览: 20
关于c#中单例模式的一些问题
当你想要在运行时动态地选择并调用某个方法,比如`originalMethod_X`,并且这个方法的调用会依据特定条件(在这种情况下,是随机选择TempClass_A、TempClass_B或TempClass_C之一),你可以使用策略模式或者依赖注入的思想来实现。
首先,你需要在每个派生类(如TempClass_A, TempClass_B, TempClass_C)里实现`originalMethod_X`的具体功能。然后,你可以创建一个`Strategy`或者`AbstractClass`,它有一个`executeMethod`或`callOriginalMethod`的方法,这个方法是公开的,并且可以在运行时通过传入不同类型的实例来调用。
例如:
```java
public abstract class Strategy {
public void executeMethod() {
// 调用originalMethod_X
originalMethod_X();
}
}
public class TempClass_A extends Strategy {
@Override
public void originalMethod_X() {
// TempClass_A 的实现
}
}
// 类B和C类似,只需覆盖originalMethod_X
public class Main {
private Strategy selectedStrategy;
public void selectAndExecute() {
selectedStrategy = RandomUtils.getRandomStrategy(TempClass_A.class, TempClass_B.class, TempClass_C.class);
selectedStrategy.executeMethod(); // 随机调用对应的方法
}
private static Strategy getRandomStrategy(Class<?>... classes) {
return classes[new Random().nextInt(classes.length)];
}
}
```
在这个例子中,`selectAndExecute`方法会根据随机数决定返回哪个子类的实例,并调用`originalMethod_X`。
阅读全文