問題タブ [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.
c# - 結果を渡す分離されたコンポーネントC#
クライアントからファイルを受信し、ファイルに対していくつかの操作を実行してディスクに保存するか、保存しないプログラムがあります。ジョブを切り離すために、 という名前のインターフェースを作成しましたIFileEditor
。ファイルに対して何かを行うすべてのコンポーネントは、このインターフェースを実装する必要があります。
このインターフェイスの主なメソッドは EditFile で、ファイルの内容を受け取って操作を行い、最後に結果をディスクに保存します。私が書いたサンプル クラスは、このインターフェイスを実装する画像からサムネイルを作成するものです。
ThumbnailCreator のようなコンポーネントがたくさんある場合があります。たとえば、zip コンテンツや、コンテンツを操作するその他のものです。
メイン プログラムでは、リフレクションによってすべてのコンポーネントをロードします。それらをロードする実装は重要ではありません。メイン プログラムの .exe の横にあるコンポーネントの ddl をコピーし、dll が IFileEditor を実装している場合は、それをリストに追加します。
主な問題は、メイン アプリケーションがファイルを受信してコンポーネントに渡すだけで、コンポーネントがジョブを実行するということです。あるコンポーネントの結果を別のコンポーネントに渡したい場合、どうすればよいですか?
コンポーネントはお互いを認識しておらず、メイン プログラムは結果の受け渡しに干渉してはならないことに注意してください。
私は検索しましたが、責任連鎖設計パターンが私の質問を解決すると思います。わからない それは正しいですか?これを実装する方法が正しければ?たとえば、1 つのコンポーネントがサムネイルを作成し、結果を渡してサムネイルを圧縮します。
この部分は、すべての開発者がコンポーネントを作成でき、メイン プログラムを拡張できるように、このように書きました。
この大きな投稿を読んでくれてありがとう。;)
dll - C# ソリューションの分離アーキテクチャでインターフェイスを格納する場所は?
この質問は以前にも答えられているように見えるかもしれませんが、答えはケースごとに異なると感じているため、いくつかの投稿を読んだ後、私のアーキテクチャに最適なケースはわかりません。
このコンポーネントを実装するすべてのアプリケーションで利用できるデータ モデルと基本機能を備えたコンポーネント ライブラリがあります。
このコンポーネントには、ディスクからファイルをロードして処理するインターフェイス IReader と、データベース アクセスと CRUD 操作を提供する IDataMapper を持つ境界があります。オブジェクトを比較するための IObjectComparison、XML シリアル化のための IXMLSerialization などの特定の機能のための他のいくつかのインターフェイス。
これらのインターフェイスの定義をどこに保存すればよいかわかりません。
オプションは次のとおりです。
1)- コア ライブラリ内で、実装を作成するときに、このコア コンポーネント内に実装ライブラリを含める必要があります。実装から切り離して維持したいと考えています。
2)- 別のライブラリ プロジェクト (アセンブリ)。そこにあるすべてのインターフェースは、コアコンポーネントに含まれ、実装ライブラリに含まれています。
3) - 実装ライブラリでは、コア コンポーネントに実装ライブラリを含める必要があります。
合理的に分離されていると思われる唯一のケースは、すべてのインターフェイスを別のアセンブリ ライブラリに配置した場合です。コア コンポーネントには、必要な実装が含まれています。
最良の選択肢の長所と短所は何だと思いますか? 私が達成したいのは、分離されたアーキテクチャだけです。
だから私がするとき
コンストラクタ:
WindowsReaderまたはSQLServerMapperをコア コンポーネントに含める必要はありません。
乾杯。
java - 異なる状況で異なるサブクラスを使用するにはどうすればよいですか?
私はこのようなジレンマを持っています:
親クラスMediaPlayer
があり、そこからいくつかのサブクラスが拡張されます。たとえば、それらはMediaPlayerSub1
MediaPlayerSub2
MediaPlayerSub3
すべて、いくつかの異なるメソッドを拡張します。
私のクライアントでは、さまざまな状況でさまざまなサブクラスを使用したいので、困難に直面しています:使用するときは、MediaPlayer
常にどのサブクラスであるかを判断する必要があります。たとえば:
結合を減らすためにコードをリファクタリングするより良い選択肢はありますか?
angularjs - js と angularjs を切り離す方法
angularを他のフレームワークに置き換えるときにすべてのコードを書き直さないようにするために、angularJSとJSを分離する解決策があるのでしょうか? はいの場合、それらをテストする方法(角度テストモジュールをもう使用できないため)?
android - フラグメントとアクティビティ間の通信の分離
シナリオ: アダプターまたはビュー ホルダー内からクリック リスナーを介して新しいフラグメントを表示する必要があります。以下は、私が過去に見た最も一般的な 2 つの分離されたアプローチです。どちらにも長所と短所があることに気付きました。
一般的にどのアプローチを好みますか?
- アクティビティがリッスンするインターフェイスでメソッドを呼び出します。
- アクティビティがサブスクライブされているイベントを発行します (イベント バス)。
- 他のアプローチ。
その理由を喜んで共有してください。
javascript - デカップル クライアントとはどういう意味ですか?
私はフロント エンド開発者のインタビューの準備をしていて、このブログを読んでいて、著者は MVC が提供すると述べています。
分離されたクライアント: backbone.js のような MVC フレームワークは、モデルの urlRoot 属性を介して REST API を使用することを奨励します。
これは何を意味するのでしょうか?デカップリングとは、コードの一部が互いに認識しないことを意味すると思いました.REST APIのバックボーンを使用すると、モデルが他の部分を認識しないのはなぜですか?