問題タブ [software-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 投票する
4 に答える
473 参照

c# - ソフトウェアデザインとWebサービスデザイン

WebサービスAPIを設計しようとしています。APIのほとんどの機能は、基本的にWebアプリケーションと非常によく似ています。

ここで問題となるのは、1つのメソッドを作成し、それらをWebアプリケーションとWebサービスAPIの両方に再利用する必要があるかどうかです。(これは論理的な解決策のようですが、非常に複雑です。Webアプリケーションで使用されるメソッドを複製し、両方を別々に保持する方がはるかに簡単です。つまり、Webアプリケーション用の1つのメソッドとWebサービス用の1つのメソッドです。)

どうやってやるの?

1)再利用:1つの主要な方法であり、WebアプリケーションとWebサービスアプリケーションの両方に再利用します(私はこれが好きですが、複雑です)

  • WebAppMethodX --uses-> COMMONFUNCTIONMETHOD_X
  • APIMethodX---使用---->COMMONFUNCTIONMETHOD_X

つまり、Commonfunctionmethod_xには、再利用可能な共通機能のセットが含まれています

PRO:コード、メンテナンス、バグが少なくなります。

CON:非常に複雑

2)DUPLICATE:2つのメソッド。1つはWebアプリケーション用、もう1つはWebサービス用です。

  • WebAppMethodX
  • APIMethodX

PRO:シンプル

CON:複製=より多くのコード、より多くのメンテナンス、より多くのバグ!

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

php - PHP フロントページ/ページ コントローラー

私は Frontpage/Page Controller(s) として以下を使用していますが、これまでのところ問題なく動作していますが、$pages 配列とスイッチである 2 つの問題を除いて、実際には私よりもはるかに長いです。ここに貼り付けました。新しいページ コントローラーが必要になるたびに、それを $pages 配列に追加して切り替える必要があるため、リストが非常に長くなります。この問題をどのように解決しますか? また、このコードで他に何か改善点はありますか? loadLogic()ページ コントローラーでは、pages/controllername/logic/function.php の下の関数を取得するために使用されます。

フロントページコントローラー - index.php:

ページコントローラー - {home,register,login,logout,page1,page2,page3}.php:

関数 loadLogic():

フォルダ構造:

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

design-patterns - この質問では、どのデザイン パターンを使用すればよいでしょうか。

率直に言って、これは宿題の質問なので、私の意見を述べます。解決策を教えてくれるのではなく、間違いを教えてもらえますか?

これは質問です:

次の 2 種類の食事のみを提供するレストランを想定します: (a) 完全な食事と (b) 経済的な食事。フルミールは次の食品で構成され、次の順序で提供されます: 1. 前菜 2. 飲み物 3. メインディッシュ 4. デザート 一方、経済的な食事は次の食品で構成され、次の順序で提供されます: 1.ドリンク 2.メインディッシュ

顧客が提供される 2 種類の食事のいずれかのみを使用して注文できるようにするために使用できる最も適切な設計パターンを特定し、食事の構成要素は指定された順序で提供する必要があります。

Factory と Iterator を混同していて、両方を一緒に使用しています。ファクトリ パターンを使用して、完全で経済的な 2 食を作成し、決定するベース オブジェクト クラスをユーザーに提供できます。しかし、要素の順序付けを強制するにはどうすればよいでしょうか。私は、作成された 2 つのファクトリの複合体を反復処理するイテレータを使用することを考えました。

どう思いますか?

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

java - ソフトウェアとゲームのテンプレートはどのように設計されていますか?

私は Web の観点から来ているため、ソフトウェアについてあまり詳しくないので、私の質問を気にしないでください.. たとえば、Web では、デザインと外観に css が使用されます。

それで..

c++ や Java などのプログラムで作成されたソフトウェアやゲームのデザイン、テンプレート、環境はどのように作成されますか?

それらは同じ言語で設計されていますか?

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

jit - ジャストインタイムコンパイルは常に高速ですか?

StackOverflowに関するすべてのコンパイラ設計者へのご挨拶。

私は現在、ハイパフォーマンスコンピューティングで使用するための新しいスクリプト言語の開発に焦点を当てたプロジェクトに取り組んでいます。ソースコードは最初にバイトコード表現にコンパイルされます。次に、バイトコードはランタイムによってロードされます。ランタイムは、その上で積極的な(そしておそらく時間のかかる)最適化を実行します(これは、ほとんどの「先行」コンパイラーが行うよりもはるかに進んでいます。結局のところ、それが全体のポイントです。事業)。このプロセスの結果はまだバイトコードであることに注意してください。

次に、バイトコードが仮想マシンで実行されます。現在、この仮想マシンは、単純なジャンプテーブルとメッセージポンプを使用して実装されています。仮想マシンは、ポインターを使用してバイトコードを実行し、ポインターの下に命令をロードし、ジャンプテーブルで命令ハンドラーを検索して、そこにジャンプします。命令ハンドラは適切なアクションを実行し、最後に制御をメッセージループに戻します。仮想マシンの命令ポインタがインクリメントされ、プロセス全体が最初からやり直されます。このアプローチで達成できるパフォーマンスは、実際には非常に素晴らしいものです。もちろん、実際の命令ハンドラーのコードも手作業で微調整されています。

現在、ほとんどの「プロフェッショナル」ランタイム環境(Java、.NETなど)は、実行前にバイトコードをネイティブコードに変換するためにジャストインタイムコンパイルを使用しています。JITを使用するVMは通常、バイトコードインタープリターよりもはるかに優れたパフォーマンスを発揮します。ここで問題となるのは、インタプリタが基本的に行うのは、命令をロードしてジャンプテーブルでジャンプターゲットを検索することだけなので(命令ハンドラ自体はインタプリタに静的にコンパイルされているため、すでにネイティブコードであることに注意してください)、ジャストインタイムコンパイルはパフォーマンスの向上につながりますか、それとも実際にパフォーマンスを低下させますか?通訳のジャンプテーブルがパフォーマンスを低下させるとは本当に想像できません。JITerを使用してそのコードをコンパイルするために費やされた時間を補うために多くのことをします。JITerがコードに対して追加の最適化を実行できることは理解していますが、私の場合、実行前にバイトコードレベルで非常に積極的な最適化がすでに実行されています。インタプリタをJITコンパイラに置き換えることで、もっとスピードを上げることができると思いますか?もしそうなら、なぜですか?

アプローチとベンチマークの両方を実装することで、この質問に対する最も正確な答えが得られることを理解していますが、明確な答えがある場合は、時間の価値がない可能性があります。

ありがとう。

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

objective-c - Objective-C でサービス指向アーキテクチャを実装する方法は?

次のうちどれが、サービス指向設計の Objective-C での正しい使用法/実装になるのだろうかと思っています。

最初のバージョンは、プロトコル (インターフェース) を使用する静的言語に固有のものです。

2 番目のバージョンはプロトコルを使用せず、Objective-C が実際に動的であるという事実に依存しています。

明らかに違いは、CloudServices がインターフェースまたはプロトコルであることであり、CloudServices のさまざまな実装を返すように ServiceProvider を構成できることを意味します。

だから私の質問は、どのスタイルを選ぶべきか、そしてその理由は?
ありがとう。

0 投票する
8 に答える
68434 参照

c++ - ヘッダー ファイルの循環依存の回避

ヘッダー ファイルの循環依存を回避する方法について何か良いアドバイスはありますか?

もちろん、最初からプロジェクトをできる限り透明性のあるものにするように心がけています。しかし、機能やクラスがどんどん追加され、プロジェクトの透明性が低下するにつれて、循環依存関係が発生し始めます。

一般的で検証済みの作業規則はありますか? ありがとう。

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

architecture - どの特定のgameObjectが衝突しているかを識別する良い方法は何ですか?

これは物理エンジンに関するものです。衝突が発生すると、2つのgameObjectが衝突しているという情報が返されます。プレーヤー、モンスター、弾丸などのすべてのエンティティは、GameObjectから派生(継承)されます。

どの特定のgameObjectが衝突しているかを識別する良い方法は何ですか?

列挙型:列挙型の使用を検討しましたが、エンティティを追加し始めるとすぐに、考えられるすべての組み合わせを追跡することが管理できなくなります。

編集:ここでC#の潜在的な解決策を見つけました:http://blogs.msdn.com/b/laurionb/archive/2009/08/13/multimethods-in-c-4-0-with-dynamic.aspx

しかし、それでも、C ++でこれを実行する必要がある場合、どのように実行しますか?

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

python - サーフェス上のモデリング ポイント

私のシミュレーション モデルには、サーフェス上のエージェントが含まれています。エージェントは で表されclass Agent、その場所は で表され、class Point表面自体は で表されclass Surfaceます。各ポイントは、実際には単なる数字のペアです。

エージェントの動きをモデル化するには、エージェントがどのサーフェス上にいるかを知る必要があります (たとえば、トーラスでは土地の端にヒットすることはありませんが、円柱ではヒットします)。

私の質問は、オブジェクトclass Pointへの参照をインスタンス属性として に追加する必要があるかどうかです。Surface

もしclass Pointそうすると、より複雑になり、効率が低下します (数値のペアを扱う代わりに、数値のペアと参照を扱うことになります)。class Surfaceこれは、1 回のプログラム実行でインスタンス化されるインスタンスが 1 つしかないため、特に厄介です。

class Agentそうしないと、moveメソッドを提供できません。代わりに、サーフェスと個々のエージェントの両方を認識している外部クラスからエージェントの動きをモデル化する必要があります。このアプローチは、論理的にあまり魅力的ではないようです。

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

java - SOA、RPC、およびプロジェクト間の依存関係

SOA についての私の理解: ビジネスのさまざまなシステムでセキュリティ チェックを行う必要があるため、同じプロセスを使用して SecurityCheck サービスを使用することは理にかなっています。このサービスは、soap、rpc、http リクエストなど、さまざまな方法で呼び出すことができます。

これがこれまでのところ理にかなっている場合、私の質問は、サービスと rpc クライアント間の依存関係に関するものです。

SecurityCheckServiceプロジェクトとRpcClientプロジェクトがプロジェクトに依存する場合、3 つの個別のプロジェクトが必要SecurityCheckResultsですか?