問題タブ [facade]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 厳密に型指定された AppSettings クラスを自動生成する
最初の質問は次のとおりです。
これは可能ですか?Joe Wrobel の作品(忘れられたCodeplex プロジェクトのリダックス)からインスピレーションを得ています。ここでは、プロバイダーのプロファイルを作成する作業を行います。これにより、プロバイダーの厳密な型指定を作成する作業が行われ、Profile クラスのファサードが効果的に作成されます。
そしていよいよ裏話!
私は魔法の糸が本当に好きではありません。それらは非常に悪いものであり、アプリケーションの更新に関して深刻な問題を引き起こす可能性があります。PHP や ColdFusion などの言語で働いてきた経験から、それらをアプリケーションに組み込むと、変更が必要になるまで忘れてしまいがちであることを私は知っています。そして、それらのすべてのバリエーションを探し出し、それに応じて変更する必要があります。
.NET は、「すぐに使える」アプリケーション テンプレートに従っている場合、それほど優れているとは言えません。多くの例では、web.config の appsettings を使用してさまざまな設定を保存しています。これは実際に保存するのに最適な場所であり、ほとんどのアプリケーションに最適です。ただし、これらを直接呼び出し始めると、問題が発生し始めます。たとえば、ConfigurationManager.AppSettings["MyAppSetting"]
. その後、魔法の文字列を使用するようになるため、PHP ユーザーよりもはるかに優れているとは言えません。
ここでファサードの出番です。ファサードは、マジック ストリングから厳密に型指定されたオブジェクトを 1 か所で作成し、開発者がそれをアプリケーションの残りの部分から参照できるようにする方法を提供します。
今では、web.config を使用して appsettings を含める代わりに、データベースを使用してそれらすべてを保持しています。アプリケーションの開始時に、名前と値の組み合わせが取得され、順番にConfigurationManager.AppSettings
viaに追加されSet
ます。大したことはありません(私が以前に抱えていた問題は別として!)。
この「アプリケーション ファサード」は、データ レイヤー、サービス レイヤー、およびプレゼンテーション レイヤーからアクセスでき、アプリケーション モードなどを保持します。どのサービス エンドポイントが yada yada yada を使用するか、多くのマジック ストリングを探す必要性を 2 つのマジックに制限します文字列 - 1 つ (名前) はファサードにあり、もう 1 つ (名前と値) は作成時点 (私にとってはデータベース) にあります。
このファサード クラスは最終的にかなり大きくなり、最終的には両方を更新しなければならないことにうんざりするでしょう。
だから私がやりたいのは、ビルドが完了するたびに自動生成される ApplicationFacade クラスを持つことです。そして今、最初に戻ります...これは可能ですか?
c# - ファサード クラス内のイベントをサブスクライブする方法
2 つのプロジェクト 1: Windows フォーム プロジェクトと 2: 特定のファイルを探してファイル システムを再帰的に走査するビジネス ロジック プロジェクトがあります。
Windows プロジェクトで、recurse というクラスに埋め込まれたイベントをサブスクライブする必要があります。私が抱えている問題は、再帰クラスのインスタンスがビジネス ロジック プロジェクトのファサード クラス内でインスタンス化されることです。
Windows フォーム プロジェクトは、次のようにファサードを介してビジネス ロジックを呼び出します。
プロジェクト 2 では、FileAnalyzerFacade() が Recurse() クラスのインスタンスを作成します。Recurse() クラスは、ファイルが見つかったときにイベントを発生させます。したがって、Windows フォームは Recurse() クラスについて何も認識せず、外側のファサード FileAnalyzerFacade() のみを認識します。
ファサードには次のサブスクリプションがあります。
イベントが発生すると、analyzeFile() が実行されます。
FileAnalyzerFacade() が再帰クラスのインスタンスを作成するため、これで問題ありません。再帰クラス内で発生したイベントにサブスクライブする Windows プロジェクトを取得するにはどうすればよいですか?
language-agnostic - ファサードパターンの使用
アプリケーション開発のある時点でファサード パターンが必要であることをどのように知ることができますか?
Facade パターンと Template パターンの間に線を引くにはどうすればよいですか?
例: [この]記事ではint placeOrder(int CustomerID, List<BasketItem> Products)
、アルゴリズムにいくつかの事前定義されたステップがあることがわかります。では、著者はここで Template Pattern を使用しないのはなぜですか?
model-view-controller - オブジェクトを構築せずにFacade.Instanceメソッドを使用するにはどうすればよいですか?
私は最近、ソフトウェアパターンに関する単元を完了し、PureMVCフレームワークを理解しようとしています。しかし、私が困惑していることが1つあります。それは、ここの教祖にとって単純なことです。
シングルトンFacadeクラスのインスタンスを作成しようとしています。コンストラクターでは、コメントは次のように述べています。
このIFacade実装はシングルトンであるため、コンストラクターを直接呼び出すのではなく、静的シングルトンファクトリメソッドFacade.Instanceを呼び出す必要があります。
Facadeオブジェクトが作成されていない場合、どのようにしてインスタンスメソッドを呼び出すことができますか?
Facade.Instanceメソッドは次のようになります。
repository - オブジェクトモデルの「視点」
ユーザーと場所の2つのドメインタイプがあります。
LocationRepositoryにメソッドGetUserLocations()があります。
既存の実装:
私にとっては、ユーザータイプからユーザーに関連付けられた場所を取得する方が理にかなっています。
後者の実装はよりきれいに読み取れると思います。APIクライアントとして、より少ないタイプを処理する必要があります(つまり、LocationRepositoryは必要ありません)。一方、LocationRepositoryに「ファサード」を書き込む必要があるため、維持するコードが増えます。
私は本能に基づいて行動し、 LocationRepositoryのユーザータイプにファサードを作成する必要がありますか、それとも現状に満足し、自分にとって「間違っている」と感じるシーケンス図を使用する必要があります(つまり、位置情報の取得はそのように感じます)間違った「視点」から取得されていますか?
c# - ファサードデザインパターンとサブクラス化
C#プログラムにファサードデザインパターンを使用しています。プログラムは基本的にこのように見えます...
ここで、メソッドを3つのカテゴリ(ロール、プロファイル、およびメンバー)にサブクラス化したいと思います。プロファイルとメンバーシップの両方が類似しているように見える多くのメソッド(および役割ごとのいくつか)を公開するため、これは開発者の目には簡単になります。たとえば、ユーザーのIDを取得すると次のようになります。
この場合、私が探している効果を達成するためにサブクラス化がどのように機能するかを誰かが「説明」できますか?
前もって感謝します。
design-patterns - Facade パターンと他のパターンの違い
パターについて質問です。私は本当にデザインパターンに問題があります。Facade パターンと Builder、Factory および Abstract Factory パターンの違いを教えてください。
design-patterns - ファサードとアダプタパターンの違いは何ですか?
私は両方の定義を読んでいますが、それらはまったく同じように見えます。誰かが彼らの違いは何であるかを指摘できますか?
ありがとう
facade - Facade クラスからデータを分離する必要がありますか?
HomeCADの「バックエンド」エンジンを作っています。多くのことを行うファサードクラスがあります。しかし、そのクラスからデータ (オブジェクトの配列など) を分離する必要がありますか? どうもありがとう
list - Facade のデザイン パターンを崩していませんか
HomeCADEngine ファサード クラスには、メソッド「addRoom(room:Room)」があり、この部屋を ArrayList に追加します。しかし、ファサードクラスの外側に部屋を作成し、それを addRom() メソッドに渡すと、ファサードパターンが壊れますか??
どうもありがとう