問題タブ [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 - ファサードクラスの外にオブジェクトを作成すると、ファサードパターンが壊れますか?
HomeCADEngine ファサード クラスには、メソッド「addRoom(room:Room)」があり、この部屋を ArrayList に追加します。しかし、ファサードクラスの外側に部屋を作成し、それを addRom() メソッドに渡すと、ファサードパターンが壊れますか??
design-patterns - 使用する最適な設計パターン: アダプターまたはファサード
次の問題に最適なパターンを判断できません。
別のサブシステムと対話するクライアント システムがあります。サブシステムは非常に複雑であるため、クライアント システムを簡素化するために 2 つの間のインターフェイスが必要です。これは Facade パターンにぴったりのように思えますが、Adapter パターンも私の問題に適していると思います。
中間のインターフェイスが単純な API 呼び出しを介してサブシステム上の個々のタスクを呼び出す場合、違いはありますか?
nhibernate - ファサードレイヤーを介してNHibernate Linqフェッチ戦略を設定する方法
データ アクセスに NHibernate を使用していますが、ファサード レイヤーを介してアクセスしています。このレイヤーは、リポジトリのインターフェイスと、ISession オブジェクトに対応する IUnitOfWork インターフェイスで構成されます。
取得されたエンティティが正しく管理されるように、リポジトリにはコンストラクタで IUnitOfWork が渡され、ロードには IUnitOfWork が使用されます。
IUnitOfWork には All というプロパティが含まれており、クラスのすべてのエンティティを IQueryable として取得します (後でフィルタリングするため)。したがって、今年作成されたすべてのエンティティを取得するリポジトリ メソッドは、次のようになります。
注意: これは、これらのインターフェイスとクラスの完全なコードではありません! 私の質問に関連するコードのみ。
IUnitOfWork インターフェイス:
UnitOfWork 具象クラス:
IFooRepository インターフェイス
FooRepository 具象クラス
関連するエンティティを熱心にロードできるように、フェッチ戦略を指定する機能を追加したいと考えています。Foo に別のエンティティ Bar に対応するプロパティがあるとします。
マッピング ファイルでは Bar が遅延読み込みされるように指定されていますが、ThisYearsFoos リポジトリ プロパティで、N+1 選択を回避するために Bar を積極的に読み込むように指定したいと思います。
Linq to NHibernate では、Expand() 拡張メソッドを使用して熱心なフェッチを指定できます。ただし、この拡張メソッドは NHibernateQueryable 型に属していますが、IUnitOfWork インターフェイスの GetList メソッドは IQueryable についてしか認識していません。
明らかに、IUnitOfWork インターフェイスが INHibernateQueryable について認識したくないのは、それが NHibernate について認識していないことが想定されているためです。
上記で指定したデザインを使用して、これを行う方法はありますか? それとも、私のデザインを再考する必要がありますか?
ありがとう
デビッド
design-patterns - Facade、Proxy、Adapter、Decorator のデザイン パターンの違いは?
Facade、Proxy、Adapter、およびDecoratorデザイン パターンの違いは何ですか?
一般的な観点からは、このようなパターンは同じことを行うように見えます。つまり、API をラップしてアクセスを提供します。
これらのパターンをどのように区別しますか?
あるパターンが他のパターンよりも適している場合をどのように見分けるのですか?
java - 3 パターンの Java クライアント/サーバー アプリケーション
私は大学生で、月末までに次のタスクを完了する必要があります...ハリウッドの原則、ファサードパターン、テンプレートメソッドパターンの 3 つのパターンを実装する Java でクライアント/サーバーアプリケーションを作成する必要があります...少なくとも3 ~ 4 個のドメイン オブジェクトが必要です... データベースは MS Access である必要があります (わかっています、わかっています...) ? 図書館アプリを作ろうと思っていました。ドメイン オブジェクトに何を使用し、どのように開始するのか興味があります...
model-view-controller - IRepository、IService、ASP.NET MVCアプリケーションのUnity、参照用の質問
私はUnityを初めて使用しますが、この質問はIoCにとってより一般的であり、IoC全体を実装するのはかなり新しいものです。このプロジェクト構造(わずかに簡略化)を使用したVS2010ソリューションがあります。
- ビジネスオブジェクト–フォルダ
- DomainModel(Class Lib prj。)– Entity Framework2POCOエンティティ
- データレイヤー–フォルダー
- DataAccess(Class Lib prj。)– EF2 EDMX
- リポジトリ(Class Lib prj。)–IRepositoryインターフェイスとリポジトリの具体的な実装
- プレゼンテーション層–フォルダ
- WebUI –MVCプロジェクト
- サービスレイヤー
- サービス(Class Lib prj。)– IServiceインターフェイスとサービス(ファサードパターン)の具体的な実装
すべてのプロジェクトはDomainModelプロジェクトを参照します。
リポジトリはDataAccessプロジェクトを参照します。
サービスレイヤーはリポジトリプロジェクトを参照します。
WebUIはサービスプロジェクトとUnityアセンブリを参照します。
すべてのサービスタイプをWebUI(カスタムUnityControllerFactory.csを介したglobal.asax)に正しく挿入するようにUnityを構成しました。しかし、リポジトリオブジェクトを注入するようにサービスレイヤーでUnityを設定するにはどうすればよいですか?
開発中に誰もショートカットを使用せず、サービスレイヤーをバイパスしないようにするために、WebUIからリポジトリプロジェクトを参照したくありません。
私が持っているカップルのアイデア(それがそれを解決するかどうかはわかりません):
- IRepositoryインターフェイスをDomainModelに移動し、IRepositoryのUnity.RegisterType<>呼び出しを追加します
- Web.configでUnity構成をセットアップする
特にサービスレイヤー/リポジトリ用にUnityを構成する方法だけでなく、一般的にプロジェクトについても、どのような方向でも大歓迎です。
design-patterns - デザインパターンのプログラミング: ファサードか否か?
私たちのチームの別の人が、彼の Web フレームワークの jar としてライブラリを提供してくれました。このフレームワークを「My Friend's Framework」と呼びましょう。
彼のフレームワークから必要な特定のクラスがあります。そのクラスによって公開されるプロパティの半分は、自分のアプリケーションに本当に必要なものです。残りの半分は必要ありません。このクラスのプロパティを取得するには、文字列操作を行う必要があります。このクラスの上に独自のフレームワークを開発するので、できるだけ依存関係を切り離したいと考えています。将来、私の別の友人がより良いフレームワークを開発するかもしれません。
そこで私がしたことは、そのクラスのファサード クラスを生成したことです。私自身のフレームワークは、ファサード クラスを介してプロパティにアクセスします。「My Friend's Framework」が変更された場合、1 つのファサード クラスを変更するだけで、残りは同じままです。さらに、文字列操作はファサード クラス内で行われます。また、ファサード クラスは必要なプロパティのみを公開します。したがって、私自身のフレームワークは、通常の getter/setter としてプロパティにアクセスするだけです。
しかし、私はこの男と口論をしました。彼は自分のクラスの実装を変更しないので、自分のクラスを直接使用するように強制しています。だから彼は、ファサードクラスを書くことは本当に価値がないと私に言いました。しかし、私は同意しません。
私が間違っている?私は自分が正しいと信じています。
design-patterns - ファサードとゲートウェイの設計パターンの違いは何ですか?
またはファサード==ゲートウェイ?
java - 私のファサードのヌルポインタ:(
私はタスクマネージャーを作成しましたが、それは長い話です...ちなみにすべてJavaで作成しました。そこで、以下に示すファサードを作成しました。HashMapに問題があり、構築中にHashMapに追加しようとした値がうまく機能していないのではないかと思います。nullポインタ例外をトリガーしているメソッドはcreateメソッドです。メソッドへの入力パラメーターは、私と信頼できるデバッガーによって入力されることが確認されています。
ここでの助けは素晴らしいでしょう...私は何かについて言及するのを忘れたと確信しているので、今このことを成し遂げる必要があるので、できるだけ早くコメントに返信します。
jakarta-ee - SFSB ファサードを分割するには?
EJB 3 テクノロジに基づくアプリケーションの開発に問題があります。
セッション Bean で Facade パターンを使用して、エンティティ Bean からクライアント (Web アプリケーション) を分離したいと考えています。
ユーザー セッションの管理に SFSB を使用しています。
だから私はクライアントにメソッド、などFacadeLoginRemote
を公開するリモートインターフェースを持っています...現在、このSFSBには、、などの他のメソッドも含まれています。すべてのユーザーが実際にコースを取得してリソースを取得できるわけではないため、Facade は値をクライアントに返す前にいくつかのチェックを実行します。doLogin()
doLogout()
getCourse(int id)
getResource(int id)
Facade を分割し、メソッドgetCourse()
を特別なクラスに配置して、ユーザーの権限をチェックする機能にgetResource()
任せたいと思います。FacadeLoginRemote
いくつかの異なる SLSB を作成する場合は、それらをクライアントに公開します。そのため、クライアントは からのチェックを回避して直接接続する可能性がありますFacadeLoginRemote
。
私が間違っている?これを行う方法はありますか?
前もって感謝します、
アンドレア