問題タブ [decouple]

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.

0 投票する
9 に答える
3030 参照

linq-to-sql - リポジトリ パターンを実装するために LINQ から SQL プロバイダーに分離されたエンティティ クラス。どのように?

リポジトリ パターンに目を通したところ、過去に使用していたいくつかのアイデアに気づき、気分が良くなりました。

ただし、このパターンを使用するアプリケーションを作成したいと考えていますが、エンティティ クラスをリポジトリ プロバイダーから切り離したいと考えています。

私はいくつかのアセンブリを作成します:

  1. IRepository インターフェイスを含む共通インターフェイスをホストする「インターフェイス」アセンブリ
  2. Product、User、Order などのエンティティ クラスをホストする「エンティティ」アセンブリ。一部のメソッドはそのような型またはそれらの配列を返すため、このアセンブリは「Interfaces」アセンブリによって参照されます。また、メイン アプリケーション アセンブリ (Web アプリケーションなど) によっても参照されます。
  3. 1 つ以上のリポジトリ プロバイダー アセンブリ。それぞれに (少なくとも) IRepository インターフェイスを実装するクラスが含まれ、特定のデータ ストアで動作します。データ ストアには、SQL Server、Oracle サーバー、MySQL、XML ファイル、Web/WCF サービスなどを含めることができます。

すべてを実装するのにかかる時間の点で非常に生産的に見える LINQ to SQL を研究することは、生成されたクラスと CustomDataContext クラスの間の深い依存関係を発見するまではうまくいくようです。

このようなシナリオで LINQ to SQL を使用するにはどうすればよいですか?

0 投票する
2 に答える
532 参照

linq - Linq Expressions を使用してクライアント側を DAL (サーバー側) から切り離す

Linq の多くの投稿の中から答えを見つけることができなかったので、ここにいます。NHibernate を使用して偶発的に実装されたサーバー側の実際の DAL について、クライアント側がまったく知らないクライアント サーバー アプリケーションがあります。つまり、クライアント側のアセンブリから NHibernate への参照はなく、データベースの抽象化もありません。クライアント側は、CSLA ビジネス オブジェクトに基づくエンティティに関して厳密に話します。

表示されたエンティティをクライアント側でフィルタリングできるようにしたいと思います。私の考えは、クライアント側で Linq 式を作成し、それをサーバー側に送信し、Linq を使用して式に一致するデータを NHibernate にフェッチし、それをクライアントに返すことです。

Linq をダウンロードして NHibernate にコンパイルしましたが、残念ながら、Linq 式 (別名クライアント側) をそれぞれの NHibernateContext インスタンス (別名サーバー側) から分離する例を見つけることができません。すべての例は次のように見えます

つまり、コンテキスト (db.Customers) と式 (where ...) の両方を 1 つのステートメントに含めます。

それらを切り離すことは可能ですか?ありがとう。

0 投票する
2 に答える
125 参照

oop - OOP で独立した概念を分離しておくために最も使用されている哲学は何ですか?

または、ご自身の経験によると、

あなたの好きなトリックは何ですか?

0 投票する
3 に答える
4924 参照

c++ - C++ コールバック -- コールバック タイプを切り離す方法

たとえば、次の擬似コードでは、クラス B は B::m_cb メンバーを介して A::Action() を呼び出す必要があります。

目的は、一般的な非テンプレート Callback クラスを作成する方法であるため、「B」はテンプレートである必要はなく、「CallBack」はあらゆる種類の関数シグネチャを保持できます。

私は以前にそのようなコードを使用したことがありますが、今ではその実装が見つかりません。私が覚えているのは次
のとおりです:-「CallBack」自体はテンプレートではありませんが、メンバーテンプレートが含まれています
-ヘルパー関数テンプレートmake_callbackはCallBackオブジェクトをインスタンス化します

誰でもポインタを与えることができますか?

これは、この同じWebサイトから取得したサンプルコードです。少し改良して、任意のコールバック関数の戻り値の型を許容できるようにしました。しかし、18行目のように、任意の数の引数を処理することはできません。また、 T はメンバー関数へのポインターであり、C に依存する必要があります。これを強制する方法がわかりません。

0 投票する
1 に答える
170 参照

c++ - この場合の分離方法

たとえば、次のスニペットでは、最初にデータベースからデータを読み取り、次にデータを変換し、最後に結果をデータベースに書き戻します。すなわち:

  1. データベースからデータを読み取り、レコードごとにクラス A に格納します。
  2. クラス A に格納されたデータをレコードごとに変換し、クラス B がこのジョブを実行します。
  3. すべての結果を QVariantList に保存し、バッチでデータベースに書き込みます。

問題は、クラス A、クラス B、およびクラス ReadTransWrite の間の密結合です。メンバー変数 A4 をクラス A に追加する場合、3 つのクラスを変更する必要があります。「//-->」で始まるコメントを参照してください

デカップリングする方法は?おすすめのパターンは?なにか提案を?

スニペット:

0 投票する
2 に答える
1475 参照

viewmodel - MVVMCrossを使用してビューモデルを構造化する方法

私はMvvmCrossフレームワークへの最初の一歩を踏み出し、プロジェクトとクラスの構造の観点から最良のアプローチを決定しようとしています。私の最大の関心事は、ビューモデル間でデータを共有し、同時にmvvmガイダンスに従うために、ビューモデルをどのように編成するかを決定することです。

ビューとそれぞれのビューモデル(メインと構成)の簡単な例があります。メインビューには、ビューモデルのプロパティにバインドされたいくつかのコントロールがあります。構成ビューを使用すると、ユーザーはテキストの色やリスト内のアイテム数などを変更できます。ユーザーが構成を変更すると、これがメインビューに反映されます。

私の最初のアプローチは、別々のビューとビューモデルを作成することでした。しかし、構成が変更されたことをメインビューに通知するにはどうすればよいですか?Github / SlodgeでSpheroプロジェクトを見て、ビューモデルが他のビューを直接参照していることに気付きました。このように、構成が変更されるたびにメインビューに通知するのはかなり簡単です。しかし、これはmvvmが推奨する分離されたビューモデルの逸脱ではありませんか?

このタイプのクラス構造化にアプローチするための最良の方法について、いくつかの洞察を得ることができますか?

0 投票する
3 に答える
1520 参照

java - Java は、2 つのレイヤー間の実装クラスの詳細を隠します

すべてのDB関連のもののためにDAOレイヤーにアクセスする必要があるビジネスロジックレイヤーを持つアプリケーションを構築しています。私の要件は、DAOImpl クラスが変化し続けることができるようなものであるため、実際の DAOImpl クラスを知らなくても、ビジネス ロジック クラスで DAOImpl クラスへのハンドルを取得できる方法を探しています。Javaでこれを達成する方法はありますか?

0 投票する
2 に答える
4482 参照

javascript - BEM と「アクティブ」クラス / HTML と JS の分離

HTML と CSS を切り離すために BEM 手法を使い始めましたが、ほとんどの場合、うまく機能しています。あくまで個人的な意見ですが、他の人がどう対処しているか知りたいです。

簡単なナビゲーションを構築する必要があるとしましょう。HTML は次のようになります。

「.nav_ item」と「.nav _link」が必要なのか、それとも代わりにこれを使用した方がよいのかわかりません

しかし、私の本当の問題は、「アクティブな」クラスをどのように処理するかです (ナビゲーションだけでなく、一般的に)。「.nav_ item--active」のような特定の「アクティブな」クラスを使用する方がよいので、CSS ファイル内で単一のクラスを使用できますか、それとも「.is-active」のようなより一般的なクラス名を使用する方がうまくいくでしょうか? ただし、「.nav _item.is-active」または (私にはさらに悪いように見えます)「.nav__list > .is-active」のように、CSS ファイル内でクラスを指定する必要があります。

どの方法にも欠点があります。BEMを使用している場合、2番目の方法は間違っているように見えますが、最初の方法を使用する場合、特定のクラス名をJSに「ハードコード」する必要があるため、JSで「トラブル」に遭遇します

そうすれば、あなたの JS は HTML 構造に依存しすぎます (または、これはあまり重要ではありませんか?)。これは変更される可能性があります...そして、これは 2 番目の質問につながります。HTML と CSS だけでなく、HTML と JS もデカップリングするとよいと聞きました。したがって、たとえば、これらの「.js-」クラスを使用して、「スタイリング」クラスを使用してそのようなイベントをトリガーする代わりに、クリックイベントやそのようなすべてのものを要素に追加できます。したがって、使用する代わりに

あなたが持っているだろう

これを HTML5 のデータ属性と組み合わせると、たいていの場合はうまくいくと思いますが、ナビゲーションやアコーディオンなどはどうなるのだろうかと自問自答しています。それらの「.js-」クラスも(アイテムごとに)使用する方が保守性に優れていますか?

または、この場合、JSで $(".nav__item")... を使用する必要がありますか? しかし、そうすると、HTML と JS を実際に切り離すことはできません (少なくとも、このトピックを理解している限り)。ナビゲーションだけでなく、アコーディオンやスライダーなど、あらゆる種類の JavaScript インタラクションが対象です。

皆さんがこれらの質問に対するベスト プラクティスを共有し、私を助けてくれることを願っています。

ありがとう