問題タブ [architectural-patterns]

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

java - Camel Context 間の Apache Camel での同期通信

前回のプロジェクトでは、 direct:vmコンポーネントを使用できました。これは、私の意見では、タスクを解決するのに最適なコンポーネントです。残念ながら、ServiceMix の Camel バージョン (2.6.0-fuse-00-00) に制限されているため、現在は使用できません。そのため、Normalized Message Router ( NMR ) を見つけました。NMR はデフォルトでは非同期ですが、パラメーター同期で同期として設定できるという情報を見つけました。direct:vmコンポーネントの代わりにそれを使用することはまだ良い解決策ですか? エンリッチコンポーネントと一緒に使用していますが、問題は見つかりませんでした。

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

ios - iOS 開発でビューを使用する正しい方法は何ですか?

カスタムビューがあります。次のような条件があります(例のみ):

そして、このビューを my に追加できますViewController:

私が知りたいのは、私は何をすべきですか?このような条件を記述するか、この目的のために別のビューを作成します。何かのようなもの:

ビュー1

ビュー2

ViewController にそれらの 1 つを追加します。

どのような状況でどのような View を作成するのが良いでしょうか? また、このようなことをどのように決定すればよいでしょうか? それが本当なら、説明付きの非常に広い答えが必要です。

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

c++ - ステータス ダイアログを Qt プロジェクトに追加する

Cryptofmと呼ばれる特定のパスワードに従ってファイルを暗号化および復号化する機能を備えたオープンソースのファイルマネージャーを作成しています。ここからコードを取得できます- 最初のバージョン。Dialog::encAll()プログレスバーが最大値に達してステータスダイアログを閉じた後、スロットのプログレスバーでロード画面を表すステータスダイアログを追加したいと思います。最初に、フォルダー内のすべてのファイルの合計サイズを再帰的に見つける必要があることがわかりました(TreeViewコンテキストメニューオプションのサイズで)-スロットDialog::dirSize()は関数の助けを借りてこれを行っていますDialog::getSelectedTreeItemSize()をクリックし、プログレス バー プロパティの最大値をその値に設定します。合計サイズの計算プロセスには再び多くの時間がかかる可能性があるため、プロセスが実行中であることを示すために何かが動いている別のダイアログが必要です。全体は、Windows 7 で大量のファイルを含む非常に大きなフォルダーを貼り付けるプロセスのようなものでなければなりません。

合計サイズを取得するプロセス:

ここに画像の説明を入力

プログレスバーが合計サイズに達するまで貼り付けるプロセス:

ここに画像の説明を入力

問題は、ほとんどすべての関数、アクションなどがDialogクラスに実装されており、スレッドを使用できないことですDialog : public QDialog, public QThread.dialog.hにこのようなQThreadを追加した後(run()メソッドを実装できるようにするため)、プログラムはいくつかを提供しますエラー:

C:\Users\niki\Documents\EncryptionProject\dialog.cpp:41: エラー: C2594: '引数': 'Dialog *const' から 'QObject *' へのあいまいな変換

C:\Users\niki\Documents\EncryptionProject\dialog.cpp:46: エラー: C2594: '引数': 'Dialog *const' から 'QObject *' へのあいまいな変換

C:\Users\niki\Documents\EncryptionProject\dialog.cpp:51: エラー: C2385: 'connect' のあいまいなアクセスは、ベース 'QObject' の 'connect' であるか、ベース 'QObject' の 'connect' である可能性があります

さらに 31 個のエラーがあるため、次のようになります。

  • ここで最良の選択肢は何ですか?
  • MVC または別のパターンを使用する必要がありますか?
  • スレッドを使用する必要がありますか?
0 投票する
6 に答える
11450 参照

android - クリーン アーキテクチャにおけるインタラクターという紛らわしい用語

クリーンなアーキテクチャに従って、デザイン Interactor はすべてのビジネス ロジックを含む部分です。Interactor という用語は、私にとって非常に紛らわしいものです。Interactor は、データとプレゼンターのような 2 つの異なるレイヤーの間で相互作用するように思えます。

使用するのに適切な用語ですか? どなたかインターアクターの目的をクリアしていただけませんか? どのパターンに従いますか?Interactor が私に思われるものではない場合、レイヤー間相互作用の設計パターンは何ですか?

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

java - Android の優れたアーキテクチャ

Android アプリケーションの優れたアーキテクチャ パターンを探ることに興味があります。

私は VIPER と一般的にはクリーン アーキテクチャのアプローチでいくつかの実験を行いましたが、親愛なる SO フェローから調査するための良い資料/アイデアを得たいと思います。

反映すべき重要なポイントを次に示します。

  1. 典型的な単一のアクティビティ/複数のフラグメント アプリでルーティング/ナビゲーションを処理するのに役立つはずです

  2. バックグラウンドスレッドで実行するコンポーネント/レイヤーとメインスレッドで実行するコンポーネント/レイヤーを明確に分離し、レイヤー間で通信する必要があります(オブザーバーパターン、イベントバスなど)

  3. 限られた量のサードパーティ製ライブラリを使用しています。使用する場合は、長所と短所を示してください (たとえば、依存性注入のダガーなど)。

  4. アプリを適応/拡張しながら、長期的に直交性を維持するのに役立ちます。コンポーネントは太ももで結合されているため、1 つのモジュールの変更は、カスケード効果を持たずに最小限のコンポーネントに影響を与える必要があります。

  5. アカデミックな側面に偏りすぎないように、実際の例/プロトタイプを github またはどこでも実際に実用的に保つことができれば素晴らしいことです ;-)

クールなアイデア/パターンを事前にありがとう

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

java - イベントからレポートを生成するには、どのパターンまたは手法を使用する必要がありますか?

何かが起こったときにデータベース内の行がいっぱいになるシステムがあるとします。

  • ユーザーが単純にログインすると、テーブルにログインの種類と時刻を含む行がデータベースに挿入されますuser_logins
  • オペレーターがユーザーを呼び出すと、オペレーター ID、ユーザー ID、および日付を含む行がテーブルのデータベースに挿入されますoutgoing_calls
  • オペレーターがユーザー呼び出しに応答しない場合、日付、ユーザー ID、およびタイプ呼び出しを含む行がデータベースに挿入されます

次に、ある期間、たとえば 1 か月が経過した後、誰が誰に電話をかけたか、応答しなかった電話の数などに関するレポートが必要になります。この機能を編成するには、どのようなパターンを使用する必要がありますか?

一見、このプロセスは多くのログを記録しているように見えますが、ログとは、何らかの形式 (date-processId-messageWithPlaceHolders) でメッセージを保存するときのプロセスです。そのため、ログシステムを使用することはあまり適していません。

別の見方をすると、イベント処理のように見えますが、「イベント」が発生したときにアクションを実行する必要はなく、リスナーもキューもありません。さらなるレポートのためにデータベースに保存するだけです。

では、この機能を効果的に実装するには、どのようなパターンまたは手法を使用する必要があるでしょうか?