タグ付けされた質問 「mvc」

MVC(Model-View-Controller)は、関心事の分離を強制するソフトウェアアーキテクチャパターンです。

2
dynamic_castの使用を回避するための適切な設計?
いくつかの調査を行った後、私が頻繁に遭遇する問題を解決する簡単な例を見つけることができないようです。 Squares、Circles、およびその他の形状を作成し、画面に表示し、それらを選択した後でそれらのプロパティを変更して、すべての周囲を計算できる小さなアプリケーションを作成したいとします。 私はこのようなモデルクラスを行います: class AbstractShape { public : typedef enum{ SQUARE = 0, CIRCLE, } SHAPE_TYPE; AbstractShape(SHAPE_TYPE type):m_type(type){} virtual ~AbstractShape(); virtual float computePerimeter() const = 0; SHAPE_TYPE getType() const{return m_type;} protected : const SHAPE_TYPE m_type; }; class Square : public AbstractShape { public: Square():AbstractShape(SQUARE){} ~Square(); void setWidth(float w){m_width = w;} …

1
パターンはビルディングブロックではないので、MVC / MVPパターンでアプリを構築すべきではありませんか?
私が読んだ本のデザインパターンについてのページを、そしてあなたのコードを書くときに、どのようにそれらを扱う必要があります。私の理解から、リンクのタイトルは次のように述べています: パターンはビルディングブロックではありません。 私が正しく理解していれば、これは意味があるまでデザインパターンを使用しないことを意味しますよね?戦略パターンを使用するつもりだと言って始めないでください。コードを書くまで待ってください。戦略パターンを使用することが設計に意味がある場合は、それを使用してください。 GUIアプリケーションを作成するとき、MCV / MVPパターンを同じように扱いますか?それぞれのリンクから、それは建築パターンであると述べています。 GUIアプリケーションを作成し、MCV / MVPパターンを使用していなくても、コードがクリーンで、読みやすく、保守可能である場合、MCV / MVPパターンを使用しなかったのは、コードのにおい/悪い設計であると想定します。 ?

2
JavaScript MVCアプリケーションの設計(キャンバス)
JavascriptのアプローチのようなMVCを使用してキャンバスアプリケーションを構造化/構築する方法を理解するのが困難です。UIはかなり流動的でアニメーション化され、ゲームはかなり単純化されていますが、トゥイーンとアニメーションに重点が置かれています。MVCがどのように機能するかは原則的にわかりますが、実際には機能しません。私はこれからバガリーをグーグルで検索し、ひどいことを読んだので、始めたときと同じように混乱しています。 アプリケーション領域に関するいくつかの詳細: マルチスクリーンゲームフレームワーク-複数のゲームがこのフレームワーク内に配置されます。一般的なUI「スクリーン」には、設定、情報、難易度の選択、メインメニューなどがあります。 複数のインプットメソッド 一部の画面のトップメニューバーなどの一般的なUI要素 異なるレンダリング方法を使用する可能性(キャンバス/ DOM / webGL) 現時点では、AppModel、AppController、AppViewがあります。ここから、各「画面」を追加してAppViewにアタッチすることを計画していました。しかし、トップメニューバーのようなものはどうですか、それらは別のMVCトライアドである必要がありますか?コンポーネントを密結合せずにどこにどのように取り付けますか? 1つのMVCトライアドを別のトライアド内に配置することは受け入れられている慣行ですか?つまり、各「画面」をAppViewに追加できますか?「トライアド」はMVC用語としても受け入れられますか?! 私の心は選択肢の下で溶けています...私はここで基本的な何かを見逃しているように感じます。私はMVCアプローチを使用せずにすでに稼働しているソリューションを持っていますが、結局、密結合されたスープ-ロジックとビューを組み合わせて、現在組み合わせています。アイデアは、それを開いて、ビューを簡単に変更できるようにすることでした(たとえば、キャンバスビューをDOMベースのビューと交換するため)。 現在使用されているライブラリ:require.js、createJS、アンダースコア、GSAP、手動のMVC実装 特に物事の実際のデザイン、および「スクリーン」を適切なM、V、またはCに分割することに関して、ポインタ、例などをいただければ幸いです。 ...またはMVC以外のより適切な方法 [NB、他に2つの誤ったstackexchangeコミュニティで質問したことがある前にこの質問を見た場合...私の脳が機能しなくなった]

3
オブジェクト指向の思考プロセスとは何ですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 5年前休業。 私は過去数ヶ月間、ZendのMVC実装と組み合わせてOOPを研究してきました。私は一般的に、プログラミングにはかなり新しいですが、私は物事に必ず私が理解することを意味私のための「正しい」方法で、学ぶべきだと強く感じ、なぜ物事は彼らが道をやっているし。つまり、何かを行う方法(何かを言う、音楽など)を学ぶ上で、何かを行う方法を学ぶ最善の方法は、そもそもなぜそのように行われるのかを知ることであることがわかりました。 とにかく、私は自分のビジネスモデル(つまりMVCのM)を開発する方法を理解するのに非常に苦労してきました。OOPを一般的に理解していないからではないと判断しました。数ヶ月、私は概念を理解することは非常に難しいとは思いません。私が研究した例は、実際には非常に直感的です。私の問題は、私自身の問題をオブジェクト指向のソリューションに変換するプロセスにあると思います。本の例(私がこれまでに読んだもの)は明白すぎるため、問題をオブジェクトに変換するプロセスはそれほど難しくありません。私が見落としているのは、高レベルの抽象化されたプロセスです。すべてのオブジェクト指向ソリューションが最高レベルで回答する必要があるステップまたは質問のある種のリスト。 このようなプロセスを5ステップ以内で説明する必要がある場合、それらはどのようなもので、その理由は何ですか。問題をオブジェクト指向のソリューションに変換する最も効果的なプロセスは何ですか?

4
MVCはPHPプログラミングのSEOにすぎませんか?
およそ何億もの「PHPフレームワーク」があります。そしてそれらのほとんどは、MVCパターンに従って自分自身に請求します。osCommerceのコーディングスタイル(SQLとHTMLと非常に混ざり合った処理ロジック)を克服することは歓迎されますが、保守可能なアプリケーション設計を実現するためのアプローチは確かに単純で簡単です。 元のMVCコンセプトは、GUIアプリケーションを対象としていました。そして、Gtk / Pythonの場合は、それに応じて実行するのが現実的であるように思われます。しかし、PHP Webアプリはライブビュー(GUI要素)と永続的なコントローラーランタイムでは動作しません。使用されているコード+ディレクトリのグループ化またはクラスの名前付けだけを記述しているのであれば、それは間違いなく間違いです。 「MVC」は、PHPフレームワークの流行語のように使用されているようです。そして、私は実際に1つまたは2つの成熟したPHPフレームワークがそれを認めているのを見ましたが、とにかくフレーズを再定義して内部に一致させます。 それは一般的にヘビ油ですか?なぜより良い用語が使われず、メンテナンス可能なPHPのためのより賢明な概念が広まったのですか? いくつかの手の込んだ推論 PHPの実装が実際のMVCパターンに従っていないと思うのはなぜですか。 モデル:理論的には、モデルは太く、ビジネスロジックを含み、コントローラーはシンハンドラー(入力->出力)である必要があります。実際には、PHPフレームワークは浅いモデルを提唱しています。CIとSymfonyの例は、等価なモデル== ORMです。HTTP入力もコントローラーによって処理され、モデルとして扱われません。 ビュー:AJAXが割引された回避策。Webページにビューを含めることはできません。PHPフレームワークはまだページを送り出します。インターフェースは通常のHTTPモデルに準拠していますが、MVC以外のアプリケーションに勝る利点はありません。(そして最後に、広く普及しているphpフレームワークは、実際にはHTMLではなくGUIビューに出力できません。Gtk/ Console / Webを操作できるPHPライブラリを見たことがありますが、フレームワークはできません。) コントローラー:よくわかりません。コントローラーは、MVCモデルで長時間実行され、永続的にアクティブである必要はありません。ただし、PHPフレームワークのコンテキストでは、これらはほとんどがリクエストハンドラです。議論の余地があるものではありませんが、少し流行語のように感じます。 より良い記述子がありますか?PMVCやHMVCのような頭字語が使われるのを見てきました。そこには説明があいまいになっていますが、おそらくこれらは現在のWebフレームワークをあまり目立たなくしているのでしょうか?
9 php  mvc 

2
MVC:私のコントローラーは半分の時間、役に立たないようです。これは問題ですか?
多くの場合、MVCを使用してプログラムを設計すると、コントローラーが半分の時間無駄になります。 つまり、ビューで何かが発生します(ボタンのクリックなど)。次に、ビューはコントローラーに通知します。次に、コントローラーはモデルに直接委任し、何もする必要がないため、他に何もしません。 例えば: ユーザーはボタン「カラーブルー」を押します>ビューはコントローラーに通知しますcontroller.colorBlue()>コントローラーはモデルに通知しますmodel.colorBlue()>モデルの色が何か青いです。 この例では、コントローラーは役に立たないようです。それは何も追加しません。ビューはモデルに直接話しかけたかもしれません。 ただし、残りの半分の時間は、コントローラーがビューとモデルの間で何らかのメディエーションを行います。 私の質問はこれです:これはMVC構造でどのくらい一般的ですか?コントローラの半分の時間が不要であるように見えるのは理にかなっていますか?それともこれは問題ですか?これは一般的ですか?私はこれにどのように取り組むべきですか? 私の質問が十分に明確でない場合は、そのように言ってください。

2
REST APIをビジネスレイヤーとして使用できますか?
PHP Codeigniter MVCデザインパターンを使用しています そして私はある種の特定のビジネスプロセスを備えたこのプロジェクトを持っていました 私のアプリケーションでは、2つの既存のREST APIを扱います。 グーグル トレロ ビジネスロジックレイヤー(BBL)として機能するREST APIを作成するというアイデアを思いつきました 次に、モデルに直接アクセスして、ビジネスルールを作成するために必要なデータをフェッチします。 RESTクライアントを使用してBLLと通信するコントローラー、 パフォーマンスの悪いアプローチですか? データアクセスレイヤー(DAL)とビジネスロジックレイヤー(BLL)の2つのモデルのレイヤーを作成する方が良いですか?

4
MVC-ビュー間でコンテキスト情報を共有する
長い投稿は申し訳ありません。質問があります。ただ我慢してください。 少しのコンテキスト 私たちは、さまざまなユーザー設定、ユーザーが所属するグループ、ユーザーの出身地などに基づいて大幅に適応する必要があるサイトを持っています。以前はページのモデルに関連ビットを含めていたため、ページに、ユーザーが特定の年齢を超えているかどうかを示すテーブルがある場合、モデルでは次のようにします。 //model public PageModel { public bool ShowTable {get;set;} } //controller public PageController { public ActionResult ShowPage() { var model = new PageModel() { ShowTable = User.Age > 21 }; return View(model); } } //view @if(Model.ShowTable) { <table>Some Html here</table> } これは、どのユーザーに何を表示すべきかを知るためにすぐに非常に複雑になりました。この問題に対処するために、特定のものが表示または非表示になるタイミングに関するすべてのロジックを一元化しました。このクラスを呼び出したUserConfigurationところ、(ほとんどの場合)何を表示すべきかを示すブール値を返す一連の関数が含まれていました。これにより、ユーザーに表示する必要がある一連の仕様とテストを設定できました。UserConfigratuion次に、これは、すべてのページモデルが継承する必要がある基本クラスに配置されました。そのため、現在、次のようになっています。 //UserConfiguration public UserConfiguration { private readonly …
8 c#  mvc  asp.net-mvc 

1
モデルは使用せず、ビューモデルのみ
私は新しいMVC 5プロジェクトをゼロから始めています。私はEF 6(Database First)とIdentity 2.0を使用しています。 私のソリューションは、3つの異なるプロジェクトで構成されています。データ(.edmxと私のDBコンテキストがある場合)、リソース(ローカライズ目的)、およびWeb(Webプロジェクト自体)です。 デフォルトでは、すべてのビューにViewModelsを使用しています。新しいビューを作成するたびに、最初に行うのはViewModelを追加することです(ViewModelがそれらのビューに接続されている場合、それらをすべて同じファイルに保持します。たとえば、AccountViewModelに保持するユーザーアカウントに関連するすべてのViewModelを保持します)。 。これまでのところ、これにより状況が非常にシンプルになり、以前に抱えていたいくつかの問題が解決されました。 しかし、私は疑問に思っています、モデルを使用することはまったく意味がありますか?現在使用しているのはIdentityの1つだけです。これはデフォルトで作成され、Identityに固有で必要なApplicationUserとApplicationDbContextが含まれています。それ以外は、すべてViewModelsです。 データプロジェクトは、アプリケーションの「モデル」と見なされますか?したがって、私は実際にモデルを使用しています。それは、Web \ Modelsに保持する一連のクラスではなく、「モデル」(エンティティによって作成されたBLオブジェクト)が格納される別個のプロジェクトです。そう思いますが、よくわかりません。 これは正しいアプローチですか、それとも将来的に問題が発生する可能性がありますか?これはWebプログラミングへの私の最初の取り組みなので、アドバイスをいただければ幸いです。
8 c#  .net  mvc  asp.net  asp.net-mvc 

1
MVCでは、モデルにサブビューモデルを含める必要がありますか?
背景: 同僚と私はMVCの解釈が異なります。つまり、同じ問題を考えると、根本的に異なる解決策が考えられます。彼はJavaのバックグラウンド出身で、MVCのすべてのコンポーネントが伝統的にオブジェクトをモデル化している可能性があります。私はHaskellのバックグラウンド出身で、OOPの経験はほとんどありません。 問題空間: モデル化しようとしている問題は、デスクトップ環境に少し似ています。ユーザーセッション(おそらくユーザーのログイン、デスクトップの背景)とデスクトップ上のプロセス(iTunes、Finderなど)には、それぞれ独自のモデルプロパティ(最小化など)があるという概念があります。 次の点に同意します。HMVCが最も優れた表現であると考えています。Session(デスクトップ)とProcess(アプリケーション)の2つのMVCオブジェクトがあること、およびProcessの概念Sessionやバックリンクを必要としないことに同意します。 ただし、MVCの中心的な意味と、ユーザーのデスクトップ上のプロセスのリストを保持する場所にどのように影響するかについては、意見の相違があります。 彼の解釈: 彼は伝統的にコードやレンダリングシステムで簡単にモデル化できる非常に有効なポイントを主張しています。彼は、プロセスのリストはProcessControllerオブジェクトのリストである必要があり、SessionControllerその中にモデルが個別のオブジェクトとして内部に含まれていると述べています。状態の、かなりの量の両方の中にあることをこれは意味SessionControllerし、SessionModelどのように関連しているSessionViewレンダリングする必要があります。 これは、簡単な検索でインターネット上で読み取ることができたものと非常に調和しているようです。 私の解釈: 私の解釈は最大のアーキテクチャ変更を必要とし、コードでの実装は難しいようですが、概念的には正しいと思います。なぜこれが当てはまらないのか、またはこの解釈と一致する別のモデル(MVCでない場合)を提示し、両方のパターンの長所と短所を強調して、最も情報に基づいた決定を下せるように誰かに説明してほしい(どちらも持っていない)ソフトウェアアーキテクチャの強力な背景)。 :私は3つの交換部品とトライアドとしてMVCを参照してくださいModel、ControllerとView。これは、私がインターネット上で読むことができるものと一致し、一部のソースは、「同じインターフェースを持つビュー、コントローラー、およびモデルは、異なる効果に交換可能である必要がある」のようなものに沿って物事を言うでしょう。これが機能すると想像する方法は次のとおりです。 モデルを交換すると、データの検証または保存の方法が変わります コントローラを交換すると、ページの動作が変更されますが、ページの一般的なデータコンテンツを変更する可能性があるものは変更されません ビューを交換すると、ページの表示方法が変わります このことから、私は任意の与えられたことを推論Modelし、Viewコントローラだけで行動していないページの「内容」を変更する必要があるため、唯一のコントローラはデータにページを変更しないでくださいスワッピング最初にレンダリングします。これは、鉄道システムの「駅コントローラー」としてのコントローラーの概念的な視覚化、モデルとしての鉄道の計画、および実際の物理的な外観とトラックの外観/感触(異なるフレーバーでは、「ビューとして「リアル」または「バーチャル3D」)。 ここで私たちは反対します: でユーザーに表示されるデータSessionViewはデスクトップ上のさまざまなプロセスによって変更されるため(プロセスは関連データとしてモデル化しています)、にSessionModelはのインスタンスのリストが含まれているはずですProcessModel。つまりSessionController、同じでランダムを使用すると、SessionView概念的に同じデータ(デスクトップ上のプロセス)が表示されるはずです。 彼は、Model別のモデルについて決して知らない方がより意味があると主張しています。つまり、SessionControllerにはのリストがProcessControllerあり、各Controllerオブジェクトにはそのモデルへのリンクがあります。a SessionViewが同じSessionModelでも異なるSessionController場合、ユーザーに表示されるデータは根本的に異なるはずです。 それぞれの解釈について議論し、最も十分な情報に基づいた結果に到達するために私たちを助けてください。 御時間ありがとうございます!

1
同じWebプロジェクト内のWebフォームとMVC
私はASP.NET Webフォームを使用して構築された大規模なレガシープロジェクトで作業しており、同じプロジェクトにMVCライブラリを追加するという考えはあちこちに放棄されています。私はこれが可能であることを知っています(たくさんの記事が利用可能です)が、同様のことをした人がこれを推奨するのかどうか、またなぜ推奨しないのか疑問に思っています。 新しいMVCパターンを使用してアプリケーションの新しい領域を構築し、レガシーページを常に実行し続けることができるという考えです。 編集:明確にするために、MVPパターンはこのプロジェクトの一部ですでに使用されているので考慮していませんが、この記事で説明されているものと同様のことをしています:https : //www.simple-talk.com/dotnet/ asp.net/mixing-web-forms-and-asp.net-mvc/

5
ほとんどのMVC厳格なphpフレームワーク[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 5年前休業。 私は約6か月間、MVCパターンに頭を悩ませてきました。MVCおよびHMVCパターンに関する大量の記事、Q&A、ブログ投稿を読んだことがありますが、100%にはなりません。 広く使用されているPHP MVCフレームワークの1つであるCodeIgniterを使用してMVCを学習してみました。私はそれを使って自社の内部Webサイトをいくつか実装しました。それでも、100%取得することはできません。何かを学ぶための最良の方法の1つは、厳密に定義されたルールに従うことです。 だから私の質問は: MVCパターンの実装方法に関して、最も厳密なPHPフレームワークは何ですか?MVCを完全に取得できるように、モデル、コントローラー、ビューの使用方法を定義するものですか?
8 php  mvc  frameworks 

3
ビューとコントローラー(Web)を分離する理由
それぞれのアクションとそのビューが対になっているように、それらを同じページに配置できないのはなぜですか?コードアイランドを使用していませんが、上部にコントローラーコードを表示し、下部にコードを表示していますか?このアプローチの問題は何ですか? MVCとは、ASP.NET MVCやRuby on Railsなどのフレームワークを指し、VとCは実際にはUIレイヤーであるという印象を受けています。

1
モデルを設定してデータと検証を取得する以上のことを行う方法
私がこの質問をしているのは、フレームワークでいくつかの小さなカスタムcmsソリューションを開発した後、モデルをORMで簡単に置き換えることができ、データの検証、取得、設定のタスクを容易にするというアイデアが生まれたからです。 。 最近、複雑なカスタムクライアント管理ソリューションの注文を受けました。それを進める方法について少し調べた後、私はこれを見つけました: http : //blog.astrumfutura.com/2008/12/the-m-in-mvc-why-models-are-misunderstood-and-unappreciated/ Now私がMVCアプローチについて読んだことは、モデルがビジネスロジックを処理するため、アイデアは新しいものではありません。しかし、モデルがビジネスロジックを処理し、慣れ親しんだ作業のタイプのために、それ自体が完全なクラスであるアプローチを計画するのは難しいと感じています。 アイデアを説明し、いくつかの例や記事などを示して、ここで私を助けてください

2
どうすれば「知る」ことができますか?
私の会社は私を助けてもらうために求人情報を投稿しました。今日採用担当者から電話があり、彼が言い続けたのは「MVC this Entity Framework that ...」だけでした-プロジェクトがWinFormsとASP.NET WebFormsでDataSetsとLinq2Sqlを使用すると言ったとき、彼はショックを受けました。 それから私は自動化されたウェブサイトのテストのためのオプションを探していて、ここでこれに出くわしました:そして私は興奮し始めました。 「知っている」ほとんどの人は、プレゼンテーションレイヤーを使用してASP.NETを非常に薄くしているため、NUnitAspのようなツールは役に立ちません。 この人は知っている、そして彼の友人は明らかに知っている。知らないうちにいると不安になり、少し悲しくなります。 この1年で時代に対応するための取り組みの中で、Linq2SqlとUnityコンテナーの大きなメリットを実感しました。どちらも私にとっては良いものでした-何年にもわたって私には明らかだったギャップを埋めることです。 その後、WinForms GUIのModel-View-Preseneterに移動しましたが、同じ理由で再びとても満足していました-長い間、私はシッククライアントとWebを分離できるように物事を分離する方法を求めていましたクライアントは共通のコードベースで共通のロジックを共有します。 しかし、私は次のことに苦労しています。そして、私は無数の人々が間違っていることはないことを知っています、そして私は大衆より賢くありませんが、私は見るために助けが必要です: WebFormsの進化としてのMVC WinFormsの進化としてのWPF Linq2Sqlの進化としてのエンティティフレームワーク(そして、さらに言えば 、データセットの非推奨) (これはすべて、これまでのところ、テストファーヴェルニュゲンを入手できなかったことに起因していると思います) したがって、私は自分自身に尋ねてきました。 WebアプリケーションでMVCを使用すると何が得られますか?追加のソースコードアーティファクトと新しいDSLを習得することを知っています。ほかに何か? MVVMパターンなしでWPFオブジェクトを使用するとどうなりますか?どこか他の場所に就職するチャンスを傷つけませんか? それに関して、WinFormsは本当に壊れているのですか?それは私ですか、それとも、8ギガのRAMを搭載したデュアルコア2.8 GHZマシンでVisual Studioに顕著な視覚的遅れがありますか?私はきびきびと好きです。エンドユーザーにはいつでもスッキリと体験して欲しい。 データセットが「古い方法」である理由 それらは、私が解決しなければならない多くの中小規模の問題に対して、迅速かつ効率的で簡潔に見えます(ただし、Silverlightにさえありません)。 プレートには複雑な山がたくさんあり、それを広げても消えないように感じます。本質的な量の複雑さは正面から向き合う必要があり、おそらくソフトウェアエンジニアリングは電気工学や機械工学、または脳外科手術のようになるはずです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.