問題タブ [interface-design]

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 投票する
10 に答える
8962 参照

.net - インターフェイス/抽象クラスの静的メソッド

まず、インターフェイスまたは抽象クラス(.NET / C#の用語で)が抽象静的メソッドを持つことができない理由を理解しました。次に、私の質問は、最良の設計ソリューションに焦点を当てています。

私が欲しいのは、サードパーティベンダーからオブジェクトA、B、Cを取得した場合に、次のようなメソッドを持つヘルパークラスを持つことができるように、すべて独自の静的メソッドを持つ一連の「ヘルパー」クラスです。

私のAHelper、BHelper、およびCHelperクラスはすべて基本的に同じメソッドを持っているので、これらのメソッドを、これらのクラスが派生するインターフェイスに移動することは理にかなっているようです。ただし、これらのメソッドを静的にしたいので、すべてのメソッドから派生するジェネリックインターフェイスまたは抽象クラスを使用できません。

これらのメソッドを常に非静的にしてから、最初に次のようなオブジェクトをインスタンス化することができます。

ただし、このコードは私には直感的ではないようです。あなたの提案は何ですか?インターフェイスまたは抽象クラスの使用を完全に放棄する必要がありますか(現在の状況)、またはこれをリファクタリングして、探しているデザインを実現できますか?

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

.net - .NET アプリのプラグイン設計

アプリケーションの一部を C# (現在は従来の VB6 コード) で書き直すことを検討しています。私が始めているモジュールは、さまざまなシステムからデータベースにデータをインポートする役割を担っています。年に 5 ~ 6 回、新しいクライアントから、使用しているシステムの新しいインポートを作成するよう依頼されます。現在、これには、アプリケーションに追加する新しいインポート オプションごとに、ソフトウェアの新しいバージョンをリリースする必要があります。

書き換えの目標の 1 つは、アプリケーションがプラグインをサポートするようにすることです。すべての新しいインポートは、ホスト アプリケーションが認識し、エンド ユーザーが操作できる個別のアセンブリになる可能性があります。これにより、新しいアセンブリをディレクトリにドロップするだけで、メイン (ホスト) アプリケーションによって認識されて使用されるようになるため、作業がある程度簡素化されることが期待されます。

私が苦労している項目の 1 つは、現在サポートされているインポート オプションの違いに関連しています。場合によっては、実際にユーザーにディレクトリを指定させ、ディレクトリ内のすべてのファイルをシステムに読み込ませます。それ以外の場合は、単一のファイルを指定してその内容をインポートできます。さらに、一部のインポートには、ユーザーが適用する日付範囲制限がありますが、他のインポートには適用されません。

私の質問は、ホスト アプリケーションがプラグインとオプションを簡単に認識できるようにする共通のインターフェイスを実装すると同時に、ビルドおよびサポートするインポート間である程度の柔軟性を可能にする方法でアプリケーションを設計するにはどうすればよいかということです。それぞれがユーザーに公開することは?

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

interface-design - 優れたシステムインターフェイス仕様テンプレートとは何ですか?

クライアントは、相互にリンクすることを計画している多数の異なるシステムを持っており、さまざまな部分のインターフェースに使用されるデータとプロトコルを文書化する一連のシステムインターフェース仕様を要求しています。

インターフェイスは、ユーザー間ではなくプロセス間です。

システムインターフェイスを文書化するために使用できるテンプレートに関する推奨事項はありますか?

0 投票する
4 に答える
536 参照

data-structures - メインフレーム (またはメイン ダイアログ) とモーダル ダイアログの間でデータを渡す最良の方法は何ですか?

ユーザー入力を収集するモーダル ダイアログが必要です。次に、メインフレーム アプリケーションで同じデータを使用する必要があります。

通常、モーダル ダイアログには、必要なものを格納できる DataType へのポインタがあり、ユーザーがモーダル ダイアログを閉じたときにデータを回復できるように、メインフレームからこのオブジェクトを参照で渡します。

これはデータをやり取りする最良の方法ですか?

気分が悪い!

0 投票する
6 に答える
1483 参照

c++ - *あなた*は C++ ABC コンストラクターを何に使用しますか?

ここの人々は、フィールドで C++ 抽象基本クラス コンストラクターを何に使用しますか? 私は、データ メンバーも非純粋な仮想メンバーも持たない純粋なインターフェイス クラスについて話しています。

ABC コンストラクターを有用な方法で使用するイディオムを誰かが示すことができますか? それとも、ABC を使用して、空、インライン、および保護されたままのインターフェイスを実装するという性質に固有のものなのでしょうか?

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

c# - インターフェイスC#でイベントを呼び出す方法は?

だから私はデザインの問題を抱えています。デリゲートとイベントを持つマウス クラスがあります。つまり、MouseButtonPressed、MouseMoved です。など、状態エンジンによって呼び出されます。

私がしたいのは、IClickable や IDraggable などのインターフェイスを作成し、マウス イベントが呼び出されたときに呼び出されるインターフェイス内にイベントを設定することです。

次に、MouseDevice クラスにある

したがって、基本的には、buttonClicked が呼び出されたときに Clicked を呼び出したいと考えています。

これを行う方法はありますか?

0 投票する
4 に答える
2582 参照

design-patterns - 画像編集ツールの高レベルのデザインパターン

私は最近、非常に特定のニーズに応える画像編集ツールの作成を開始しました。これは、私自身の娯楽のためだけでなく、それを使用しようとしている人々にとっても同じです。しかし、私は早い段階で少し建築上の問題にぶつかりました。

他の画像エディタと同様に、ユーザーは「ツール」を使用して画像を描画および操作します。これに対する私の最初の試みは、単純なインターフェースで構成されていました。

これ(私は思った)は素晴らしくてきれいで、簡単なメンテナンスと拡張を可能にするでしょう。インターフェイスオブジェクトをに追加し、実行時に選択したオブジェクトのDrawEffectメソッドを呼び出すだけです。

このアプローチの問題は、さまざまな描画ツールが単一のインターフェイスに完全に準拠していないことです。たとえば、ペンツールは、機能するために描画するポイントを知っているだけで済みます。ただし、長方形には、現在の位置だけでなく、最初にクリックした点も必要です。ポリゴンツールは、複数のマウスクリックを追跡する必要があります。

これを実装するための良い方法を考えるのに苦労しています。私が今考えることができる最良の方法は、switchステートメントと各ツールのケースを含みます。これは、描画ロジックがToolタイプのオブジェクトによってカプセル化されるのではなく、Canvasクラスにあることを意味します。これは練習なので、正しい方法でやりたいと思います。よろしくお願いします。

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

search - 複数の検索オプションを処理するための最良の方法は何ですか?

これはおそらく20年前からある質問ですが、とにかく質問します。複数の検索オプションがある画面があります。いくつかは組み合わせることができます。一部は排他的です。

元:

姓名で検索

また

年齢で検索

これを処理するための最良の方法は何ですか?これをアプリで処理し、多くの関数の1つを呼び出すか、if/elseの全体を含む1つの関数を呼び出しますか。一連のif/elseを実行するのは、とても時代遅れのようです。もっと効率的な方法はありませんか?

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

c++ - C ++DAL-参照を返すか、参照で渡されたデータを入力します

[編集1-3番目のポインター構文を追加しました(ありがとうAlex)]

DALにはどの方法を選びますか、またその理由は次のとおりです。

車が見つからない場合、最初のメソッドはnullを返し、2番目のメソッドはfalseを返します。

2番目のメソッドは、ヒープ上にCarオブジェクトを作成し、データベースから照会されたデータを入力します。おそらく(私のC ++は非常に錆びています)、それは次の行に沿ったコードを意味します:

ありがとう

0 投票する
5 に答える
74932 参照

dependency-injection - DI コンテナーを介して作成されたオブジェクトを初期化するためのパターンはありますか

オブジェクトの作成を Unity に管理させようとしていますが、実行時までわからないいくつかの初期化パラメーターが必要です。

現時点で私が思いつく唯一の方法は、インターフェイスに Init メソッドを用意することです。

それを (Unity で) 使用するには、次のようにします。

このシナリオrunTimeParamでは、param はユーザー入力に基づいて実行時に決定されます。ここでの些細なケースは単純に の値を返しますrunTimeParamが、実際にはパラメータはファイル名のようなものになり、initialize メソッドはファイルに対して何かを行います。

これにより、多くの問題が発生します。つまり、Initializeメソッドがインターフェイスで使用可能になり、複数回呼び出すことができます。実装でフラグを設定し、繰り返し呼び出しで例外をスローするのは、Initializeかなり不格好に思えます。

インターフェイスを解決する時点で、の実装について何も知りたくありませんIMyIntf。ただし、私が必要としているのは、このインターフェイスには特定の 1 回限りの初期化パラメーターが必要であるという知識です。この情報を使用してインターフェイスに注釈を付け(属性?)、オブジェクトの作成時にそれらをフレームワークに渡す方法はありますか?

編集:インターフェイスについてもう少し説明しました。