2009-07-01 8 views
0

カウボーイコーダは、SO-ベテランからいくつかの助けを必要とします:単一責任原則:読者、ライター、およびコンテナのクラスで参考文献クラスを分離する必要がありますか?

I持っている(実際に、それは別のファイルであるが、のが唯一の1つのファイルを想定してみましょうことができます)ファイルから読み込まれている参考文献を使用し、与えられたアプリケーション。

私は関連するクラスをコピーしたので、アプリケーションと同じ方法で参考文献を使用する新しいアプリケーションを作成します。

数日後%参考文献クラスで

、読み取り、書き込み、および文献目録を維持するためのコードがある:...

問題は、以下の通りでした。参考文献を読むクラスが1つ、すべての値を保持するコンテナクラスがあれば、私の仕事ははるかに簡単でした。私は参考文献を書いたり編集したりするのではなく、読み込んで値を保持したいと思う。

BibliographyReader、BibliographyWriter、およびBibliography(Container)クラスに目録クラスを分類するのが最もよいと私は考えていますか?

P .:「カウボーイコーダー」、「カウボーイコーディング」などのタグを作成できますか?私はこのタグが本当に欠けている;)

答えて

4

私は、リーダー/ライター/ゲッターから "コンテナ"クラスを分離するアプローチが好きです。 「戦略パターン」を検索すると、それに関する詳細情報が表示されます。

簡単なアプローチは、BibliographyクラスがそのコンストラクタにIBibliographyReaderを受け入れ、クラスにそのインターフェイスを実装させることです。 Bibliographyクラスを作成するときは、具体的なリーダー実装のインスタンスを渡します。次のように

+0

私はIBibliographyReaderのアイデアが好きです。テキストファイルから読み込むクラス、xmlfileから読み込むクラスなどを実装できます。 – Inno

+0

私は、これをセミコンプレックスデータストレージで行います。それは単体テストのすべてをより簡単にします。 –

0

私が責任を分割します: -

  • 参考文献:参考文献に関連するデータを保持しています。このデータはコンストラクタまたはセッターを介して受け取ります。
  • BibliographyFileStreamReader:ファイルストリームを指定して参考文献を読み込みます。参考文献のインスタンスを返します

また、BibliographyFileStreamWritterを追加することもできます。

関連する問題