私は時間で成長すると仮定していると私は新しい列挙値を追加し、ユーザーはまた、impementationのどこかを提供する値を持つ列挙型クラスを持っています。しかし、私はimpementationが他のクラスになりますようimpementationを提供するためにそれらを強制するかどうかはわかりません。例えばのために
public enum DayType {
SUNDAY,
MONDAY;
}
クラスに言及
class X{
DateType dateType;
..
}
そして、いくつかの他のクラスで使用
if (x.getDateType().equals(DayType.SUNDAY)) {
...
}else if(x.getDateType().equals(DayType.MONDAY)){
..
}
誰かがDATETYPEを追加するのであれば、彼は同様のif-elseロジック上記でimpementationを追加することを余儀なくされなければなりません。好ましくは、可能な場合、機能インターフェイスを追加することによって?
impementationは春の依存関係を持っているように私は、列挙型クラスでimpementationを強制することはできません。
本当の答えは次のようになります。これをしません。
あなたには、いくつかの「タイプ」を持っている、とあなたは、この「タイプ」は異なる動作が必要な時間をかけて新しい化身を、表示されることがわかっている場合は、その答えは、抽象クラスとポリモーフィズムを使用することです。
あなたが何かを持っているという考え:あなたがもし/他のチェーン、またはswitchステートメントを使用するかどうかは関係ありません。
if (someObject.getSomething() == whatever) { then do this } else { that }
悪い習慣があります!
すべての場合には、そのようなオブジェクトの「一般的な」メソッドを呼び出すために、異なるサブクラスのインスタンスを返すために、工場内などswitchステートメントを使用する必要があります。
現在のアプローチは、A)は、複数の方法で依存関係を強制する)内部状態及びBについての知識を外在あります。
これはどのようにスパゲッティコードの開始です!より良いステップバックして、これを解決するためのより多くのOOPの方法を考えます!