問題タブ [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.
design-patterns - ファサードは各パッケージの中にありますか、それともファサード専用のパッケージが必要ですか?
ファサードクラスはどこに行かなければなりませんか?3つのパッケージがあるとすると、ファサードAはパッケージAの中にあり、ファサードBはパッケージBの中にあり、ファサードCはパッケージCの中にあります。それとも、ファサード専用の別のパッケージが必要ですか?
もっとお勧めは何ですか?
私は最初の解決策を使用していますが、正しくないと思います。一部のクラスは、クラスが使用しないオブジェクトを割り当てるファサードを使用しています。
php - ファサードのデザイン パターン、ファサードから属性を取得
アプリケーションにファサードデザインパターンのようなものがあります。これを開始できます: http://www.patternsforphp.org/doku.php?id=facade
例から:
ファサード = コンピュータ
部品: CPU、メモリ...
そして、この状況の解決策は何ですか: コンピュータには ID があります。ほとんどの部分はコンピュータ ID を知る必要はありませんが、World と通信する部分がいくつかあります。配置されているコンピュータ ID を知る必要があるネットワーク カード。
何をすべきか - 最善の解決策は何ですか?
返信ありがとうございます。
design-patterns - ファサードの設計上の問題
次の質問があります。
パッケージ A (別の dll) には ClassA があります。
Facade (別の別の dll) には、メソッド public IEnumerable GetAll(){} があります。
Web アプリケーションでは Facade.GetAll() を呼び出しますが、IEnumerable を取得するには、Facade とパッケージ A の両方を参照する必要があります。
ファサードのみを参照し、同時に IEnumerable を取得することは可能でしょうか (たとえば、ファサードで ClassA のインターフェイスを構築するなど)?
それ以外の場合、両方の dll を参照すると、(理論上または誤って) ClassA から GetAll() を呼び出すことができます。しかし、最初のアイデアは、ファサードを介してビジネスクラスと通信することでした。そのため、ウェブサイトのようなエンドアプリはビジネスクラスの存在を認識しませんか?
oop - ファサード クラスの適切な名前は何ですか?
ちょっとした背景: 科学モデルを扱うためのライブラリ/フレームワークを構築しています。モデルが実装しなければならない操作を定義するインターフェースがありますModel
が、これはかなり最小限です。つまり、インターフェースは、モデル実装者の観点からModel
モデルのコントラクトを定義します。
ModelInfo
このフレームワークは、モデルに関する他の機能を多数追加しますが、現在、クライアント コードは、ModelHost
、、 などの他の多数のクラスを使用してその機能にアクセスする必要がありますModelInstance
。
このフレームワークを使用するアプリケーションでは、モデルを実行するこのすべてのメカニズムを実際に処理する必要はありません。オブジェクトを使用します。(このパターンは既にフレームワークの他の部分に適用されており、成功しています。)
ここで質問があります: 既に interfaceModel
があるとすると、ファサード クラスの適切な名前は何でしょうか? Model
インターフェースはフレームワークとモデル実装の間 の契約であり、新しいクラスはフレームワークとクライアント アプリケーションの間の契約を定義します。
または、より一般的に: ライブラリまたはフレームワークによって提供される抽象化がある場合、抽象化への「プロバイダー」と「消費者」のインターフェイスを明確に識別するために、抽象化の「2 つの側面」にどのように名前を付けることができますか?
(問題があれば、このプロジェクトでは Java 6 を使用しています。)
java - Java Web サービスから認証の詳細を隠すファサード
舞台裏で Web サービスを使用するサービス API を使用する UI クライアントを構築しています。API サービスの 1 つが次のようになります。
LoggedInUser は、代わりにメソッドが呼び出されるユーザーです。AuthenticationFault はチェック例外です。これらのサービス インターフェイスは 20 ほどあります。私がやりたいことは、loggedInUser パラメーターと AuthenticationFault 例外を隠すファサードを実装することです。ファサードの実装は、現在クライアントにログインしているユーザーでこれらのメソッドを呼び出します。
また、他のチェック済み例外についてもクリーニングを行いたいと思います。ご覧のとおり、クライアントがページ -1 を取得しようとしたときにスローされる InvalidIndexFault 例外がありますが、これはプログラマーのエラーであり、チェック例外として使用したくありません。
現在、私がやったことは、好きではない例外に対して常に RuntimeException を再スローすることですが、後で気が変わった場合、後でそれを変更するのは大変な作業です。これもコードの重複のように感じます。他のプログラマーは例外を飲み込んでログに記録するだけで、まったく恐ろしいことです。ほとんどの場合、例外が発生した場合は、エラーを表示する UI のエラー ハンドラーにバブルアップしたいと考えています。
私の頭に浮かんだいくつかの解決策がありました:
- Java 動的プロキシ
- コード生成
私はこれらの解決策を試してみることができなかったので、最初にここで質問したほうがよいと考えました. これをどのように実装することをお勧めしますか? 環境はJava 6で、ビルドツールはMaven 3です。
PS。これに答える場合は、「番号 2 を選択」以上のことを言ってください :) ヒントやその他の実装の詳細を歓迎します。
明確化として、現在ログインしているユーザーを取得することは問題ではないため、私を手伝う必要はありません。私は現在、それをインターフェースの背後に隠し、IoC を使用して注入しています。舞台裏で ThreadLocals を使用
design-patterns - ファサードパターンのファサードからの呼び出し数
ファサードレイヤーに何を配置する必要があるか、およびファサードレイヤーが下にあるレイヤーに対して何回呼び出す必要があるかについて「ディスカッション」を行っています。
私たちのプロジェクトには、サービスとデータベースへの呼び出しを調整するオーケストレーションレイヤーがあります。また、ビジネスルールと計算を備えたビジネスレイヤーもあります。
私たちのファサードレイヤーには、セキュリティチェック、ロギング、エラー処理があります。
ここで、質問:ファサードにオーケストレーションレイヤーへの呼び出しが1つしかないのか、それとも複数の呼び出しで問題ないのか。単一の呼び出しのみの場合、これらのレイヤーを単一のレイヤーにマージする必要があります。
これらはC#で記述されたWCFサービスです。
javascript - JavaScriptでのモジュール+ファサード+メディエーターの組み合わせ
http://addyosmani.com/largescalejavascript/のすばらしい記事を読み終えました。
この記事では、JavaScriptアプリケーション用にモジュール、ファサード、およびメディエーターを組み合わせる方法について説明します。
記事の説明をコーディングすることはできますが、メディエーターにアクセスするためにファサードを使用する必要がある理由がわかりません。
モジュールから直接メディエーターにアクセスできると思います。
教えてください。
PS:それはここで有効な質問ですか?
implementation - ファサードデザインパターン-実装
私は、EricGammaによる「再利用可能なオブジェクト指向ソフトウェアの要素」という本を参照しています。しかし、ファサードパターンの概念は理解しましたが、特に実装部分が少し苦手なので、本に記載されている実装ポイントを理解することはできません。
以下は、本で言及されている2つのポイントです。
クライアントサブシステムの結合を減らす:Facadeクラスを抽象クラスにすることによって。
パブリックv/sプライベートサブシステムクラス。
誰かが私にこれをいくつかの例または私が持っているコードで説明してもらえますか?
抽象クラスのコード:
facade - ファサードパターン、これは大丈夫ですか?
1つのクライアントから接続するサーバーが2つあります。サーバーごとに、ftpの「put」と「rm」を実行します。
1つのファサードを構築し、次のようなインターフェイスを使用する必要があります。
そして、ファサードは接続の確立と切断のすべてを処理する必要がありますか?もしそうなら、それはそうするために工場を使うべきですか?