質問

タイトルが私がここで言おうとしていることをキャプチャするかどうかはわかりません。

OOで設計するときは、オブジェクトを最も具体的な領域に分割する必要があります。したがって、オブジェクトの作成を扱う工場オブジェクトがあるが、後で同じものが同じである場合でも、別の目的のためにオブジェクトを作成する方法に出くわします。オブジェクトは、個別のfcatoryを作成するか、ExSitingに追加する価値があります。

私の最大の心配は、たくさんのものでクラスを膨らませるか、オブジェクトを分割して、私のプロジェクトをクラスの海に希釈することです。

何か助けがありますか?

編集:

私のサイドノート/サブトピックでは、プログラムで使用すべき粒度のレベルを見つけたいと思います。ちょっと、あなたはどれくらい低く行くべきですか?

役に立ちましたか?

解決

私の最大の心配は、たくさんのものでクラスを膨らませるか、オブジェクトを分割して、私のプロジェクトをクラスの海に希釈することです

これは非常に有効なポイントであり、均等に合理的にサイズのプロジェクトでは、特に現実的には要件自体がほとんどの場合に時間とともに進化するため、前もって進むことは非常に困難です。これは、「リファクタリング」が登場する場所です。特定のポイントで知っていることに基づいてデザインし、システムが進化すると思うものについてあまり多くの信仰をあまりにも多く努力しないようにします。

あなたが今何を構築しているかを知っていることを考えると、あなたはクラスを設計して、OOの概念を最大限に活用しようとしています - 例:カプセル化 /多型。これは、他の人も同様に注目しているように、達成するのが難しいことで有名であり、OOシステムの設計とドメインの知識の両方において、実際に便利になる可能性があることで有名です。

あなたが知っていることに基づいてデザイン - >ビルド - >レビュー - >リファクタリング - > redesign->そしてそれは続きます。

他のヒント

正しいレベルの詳細と責任を見つけることが、OOPデザインを非常に難しくしている理由です。私たちは特定のケースであなたを助けることができますが、この一般的なものは何でもありません。これを解決する方法のアルゴリズムまたは厳格な方法論がある場合、誰もがOOPデザイナーになる可能性があります。

「今、これは大きくなりすぎていますか?」と決めるのが好きです。 「それの目的を簡潔に説明できますか?」デザインのコンポーネントの機能(クラス、メンバー変数、方法など)の機能を説明するために、警告とイタチの単語をたくさん導入しなければならない場合、それは複雑になりすぎて分割する必要があることを示す良い指標かもしれません。

特定のケースでは、既に工場のオブジェクトを持っている場合、乾燥した原理(繰り返さないでください)は、同じことをする別の工場を作成することは悪い考えだと言うでしょう。

これはあなたが直面する実際の問題ですか?それとも、あなたのコードが将来どのように成長するかについての単なる恐怖ですか?

同じタイプのオブジェクトを使用して大幅に異なる問題を解決している場合、懸念の分離に焦点を合わせてクラスを再設計する必要がある場合があります。より具体的な答えが必要な場合は、この機能が必要なクラスのタイプの例を提供する必要があります。


私はQで物事をひどく表現したかもしれません。コードをどこに置くかというケースを繰り返すことはないと思います。それは、Excelスプレッドシートにデータを展開するためのデザインオブジェクトを作成するExsiting Factoryに追加できます。一方、Excelデータをインポートするための独自の工場があることもわかりました。どちらの工場も同じオブジェクトを生産しますが、内側の作業は完全に異なります。 -

クラスの抽象化(サブクラス化またはインターフェイスを使用する)を実行していない場合、または計画している場合は、工場パターンをまったく使用する必要がない場合があります。工場のパターンは、一般に、基本クラスの種類のオブジェクトを提供するか、特定のインターフェイスを実装するのに最適です。

どちらの工場も同じオブジェクトを生産しますが、内側の作業は完全に異なります。

私があなたを正しく理解しているかどうかはわかりませんが、これは候補者のように聞こえます 抽象的な パターン。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top