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

标签 java design-patterns strategy-pattern

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

相关文章:

java - 如何复制缓冲图像

java - 在 Spring 中解析复杂的 JSON 请求

design-patterns - 策略设计模式与状态设计模式

java - 无法加载流口水 kie :ksession bean

java - 抽象方法的空实现是一种好方法吗?

javascript - 等待异步事件处理程序的设计模式

php - 用于 Code Igniter 模型的完整抽象工厂模式

c++ - 使用策略模式设计软件的问题

java - 有没有比传递参数更好的方法来确定方法的行为?

java - 日志记录有时有效,但有时无效