-
11-09-2019 - |
質問
構築を行ってい検索アプリとして指数の異なるデータ。た場合の問い合わせに対応する検索エンジン指数、検索結果を指定するデータソースします。い工場でのパターンを使った表示のテンプレートの各種検索結果が感じたことをこのパターンは厳しさを増すことから管理がますますデータソースのインデックスが付きの検索エンジンにおいてe新しいコードテンプレートを作成するための新しいデータソース).
作成したのは、以下のような構成になっ工場についての記事によるグランビルバーネット上で DotNetSlackers.com
パターン工場http://img11.imageshack.us/img11/8382/factoryi.jpg
にするために、検索アプリを使用する場合と比べ、私の考えた上での設定データベースのテーブルに使用できる定義個別のテンプレート型工場内のパターンが参考の目的を達成するためにテンプレートの構築を行う。きっかけになるかもしれないとと思っていlook up tableて使用される指定の型のテンプレートの構築をベースに、検索結果のデータソースです。いしいテーブルの指定する領域を表示するテンプレートタイプです。いるのも必要なときもありますが、テーブル(または追加カラム内のテンプレートのテーブルと使用することの定義をどのように描画するかをこの分野でのハイパーリンクラベルCssClassします。
なものとしてのパターンはこのような態度を取るのか。ぜひ<url>までご連絡ください。おかげさ -ロバート-
解決
いうことを提案した溶液であることは、保守性以外の関連付けるデータソースのコードテンプレート、現しています。実際、私もそうはいかないところまでは言えな柔軟性を押し、テンプレートのスキーマおよびレンダリング情報をデータベースは、アプリケーションを困難なものに維持します。
例えば、いとこのデータソースとの属性について知っておきましょこれらを理解し正しい):
Document { Author, DateModified }
Picture { Size, Caption, Image }
Song { Artist, Length, AlbumCover }
ましてそれぞれのデータソース検索結果.各要素の描画される異なる(写真が描画されるとプレビュー画像アーカの左、または曲が表示アルバムのカバーなど)
ましょうを見ただけでも、それは明らかでレンダリングの下でご提案します。するデータベースに問い合わせのための描画その調整の一部のHTMLで発言したいですから緑色の背景の文書やデジタルカメラモデルへアクセスのための写真です。のための引数は、例えば実現に必要な情報である三つの背景色のための歌、絵画、書面については現在、いただいているデータベースのスキーマの変更を促進し、変化のパラメータ化されたテンプレートだけのレンダリング値です。
ということから決まりましたが、結果文書のニーズド制御の必要数のボタンで、曲が必要プレイヤー。現在、各テンプレート当たりデータソースの変化をもらっしゃいますね返す開始を除くなお、このデータベース層されておりませんでした。
これはどのようにデザインができ現在の柔軟性を定義する異なるテンプレート当たりデータソースです。他の物体を万が一紛失してしまってテンプレートを収録ソース。
私見できる方法の再利用に共通要素の制御に放出される、さま、ありがとうございましたのマッピングの工場との間のテンプレートのデータソースにテンプレートとして別ファイル当たりデータソースです。見方針をレンダリングによCSSまたは類似の構成を設定します。作りも行いやすくなっていを考慮し、輸出にマッピングとして単純なXMLファイルです。、コーポレート-ガバナンスを新たなデータソースするだけで追加のマッピングを作成し、適切なテンプレートとCSSファイルに落としを予定。
応答コメント。
私は簡単なスイッチの声だけで十分であり:
switch (resultType)
{
case (ResultType.Song):
factory = new SongResultFactory();
template = factory.BuildResult();
break;
// ...
場所の論理出力定のテンプレートを作成します。だいたいものよりもコンパクトで長くスイッチ計算書を作成できるマッピング、辞書のようになります:
IDictionary<ResultType, ResultFactory> TemplateMap;
mapping = new Dictionary<ResultType, ResultFactory>();
mapping.Add(ResultType.Song, new SongResultFactory());
// ... for all mappings.
その代わりにswitchステートメント、これを実行する事ができます。ワーライナー:
template = TemplateMap[resultType].CreateTemplate();
私の主な議論した時点でまだのマッピング-のいずれかのデータベースに大きなスイッチ、またはこのIDictionaryインスタンスを初期化されます。
ですから、店のマッピングで単純なXMLファイルの読み込み:
<TemplateMap>
<Mapping ResultType="Song" ResultFactoryType="SongResultFactory" />
<!-- ... -->
</TemplateMap>
使用を反映していました。al.を生成するためのIDictionary.まだ維持のマッピングから生まれたXMLファイルをするのが簡単に展開している。