私は少しセリエで動作し、シフトなどのいくつかの操作を行うアルゴリズムを書いています。MutableBigInteger と BitString ( javabdd ) という 2 つの異なるデータ構造を使用してアルゴリズムをテストしたかったので、スマートな設計パターンを考えてみようと思いました (あまりやらないので)、戦略設計を見つけましたかなり面白いパターン。私が気になる唯一のことは、関数 AND の場合、同じ型を計算する必要があることです。いくつかのコードで説明します:
論文は私の2つの異なるクラスです:
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);
}
このインターフェイスで2つのクラスを拡張しますが、MutableBigIntegerとBitStringでキャストを行う必要があるため、実際には役に立ちません(速度のため)。
十分に説明できたことを願っています。良い一日を!
ニコ