私は数人の同僚と一緒にウェブサイトに取り組んでおり、クラスアーキテクチャの見方にいくつかの違いがあるため、これを投稿しています。この問題についてより大きなコミュニティがどのように感じているかを確認してください。同様の状況。
アクティブ レコード パターンを介して実装されたモデルで MVC アプローチを使用しています。モデルの 1 つは、データベース内の製品テーブルに関連する「製品」モデルです。つまり、有形 ( type = 1 ) と非有形 ( type = 2 ) の 2 つの主なタイプの製品があります。コード全体を通して、まさにこのタイプの製品に関連する大量のロジックがあります。(有形の場合はこれを行い、無形の場合はあれを行います...)
したがって、1 つのアプローチは、クラス TangibleProduct および NonTangibleProduct を作成し、ファクトリを介してどちらか一方を取得することです。もちろん、これらのクラスには重複するメソッドがあります。つまり、isTangible() または isNonTangible() が両方のクラスに存在しますが、あるケースでは true を返し、別のケースでは false を返します。(これは単なる例です)。製品タイプに基づいて異なる値を返すクラスで、少なくとも約 30 の異なるメソッドが見られると予想しています。
もう 1 つの方法は、Product クラスを 1 つだけ持ち、各メソッドで IF ブロックを実装し、製品が有形または無形の場合にロジックを実行し、結果を返すことです。
これが漠然とした質問であることは承知していますが、OO 環境で作業しているほとんどの人は、ある時点で同様の状況にあったと思います...
あるアプローチを他のアプローチよりも選択した場合、長期的な結果は見られますか? 他のアプローチよりも優れているか、または劣っているアプローチはありますか?
編集:申し訳ありませんが、私はあまりにも明確ではないかもしれません. これら 2 つのクラスは、Product クラスを拡張します。(つまり、「class TangibleProduct extends Product」および「class NonTangibleProduct extends Product」)
ありがとう