gpt4 book ai didi

java - 策略设计模式(带参数方法)- JAVA

转载 作者:行者123 更新时间:2023-12-01 23:53:50 33 4
gpt4 key购买 nike

我正在编写一个算法,该算法适用于位串行并执行一些操作,例如移位和与它。我想用两种不同的数据结构来测试算法: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/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com