我正在编写一个算法,该算法适用于位串行并执行一些操作,例如移位和与它。我想用两种不同的数据结构来测试算法:MutableBigInteger 和 BitString (javabdd),所以我想我会尝试提出一些智能设计模式(因为我不经常这样做),并且我找到了策略设计图案很有趣。唯一让我困扰的是,对于 AND 函数,它需要计算相同的类型。我用一些代码解释:
这些是我的两个不同的类(class):
public class MutableBigInteger {
public void shift();
public void and(MutableBigInteger b2){
// ...
}
}
public class BitString {
public void shift();
public void and(BitString b2){
// ...
}
}
我想进行一个设计,所以在创建我的类时,它执行我只是在这些类之间选择的算法。该算法如下所示:
while( ... ) {
bittrain.shift();
bittrain.and(bittrain2);
}
对我来说,问题是如何使用 AND 函数来实现这一点,因为我自己的每个类都在参数中等待同一个类。我想我会喜欢这个:
public interface BitTrain {
public void shift();
public void and(BitTrain b2);
}
并用这个接口(interface)扩展我的两个类,但这并没有真正帮助我,因为在 MutableBigInteger 和 BitString 中我将不得不进行强制转换,我真的不希望那样(因为速度)。
希望我已经解释得足够好,祝您有美好的一天!
妮可
最佳答案
不要认为这是最干净的方法,但您可以使用泛型:
public interface BitTrain<T extends BitTrain<?>> {
public void shift();
public void and(T b2);
}
然后实现如下接口(interface):
public class MutableBigInteger implements BitTrain<MutableBigInteger> {
public void shift();
public void and(MutableBigInteger b2){
// ...
}
}
关于java - 策略设计模式(带参数方法)- JAVA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15918964/