标签: model-view-controller

为什么Qt会滥用模型/视图术语?

我认为Qt中使用的模型/视图控件的术语是有缺陷的.在他们的解释页面上,他们说,他们通过合并View和Controller将MVC简化为MV,他们给出了以下图片:

解释Qt MVC的图片

不过我认为,他们错误地命名了对象的角色,我认为,

  1. 他们所谓的View with merged Controller实际上只是一个View.
  2. 他们所谓的模型实际上只是控制器.
  3. 如果你真的想拥有一个模型,那么它就是"数据"所在的地方.

我说的是你在应用程序中使用Qt模型/视图组件的通常和理智的方式.原因如下:

  1. 这通常是Qt组件,它按原样使用,不添加任何特定于您的对象的Controller逻辑)
  2. 这不是一个模型,只是因为你应该实现几个Qt方法,如rowCount,columnCount,data等,这与你的模型无关.事实上,控制器中有典型的模型方法.当然,你可以在这里实现控制器模型逻辑,但首先它将是非常糟糕的代码设计,其次你将控制器和模型合并而不是控制器和视图.
  3. 如上所述2.如果你想分离模型逻辑,它肯定不是图片上的蓝色框,而是虚线"数据"框(当然是与真实数据通信).

Qt在他们的术语中是错误的,还是只是我不懂的?(顺便说一句:这不是学术问题的原因是我已经开始按照命名开始对我的项目进行编码,我很快就发现,代码显然不对.只有在我意识到之后,我应该不要尝试将模型逻辑放在他们称之为Model的模型中)

model-view-controller qt

101
推荐指数
3
解决办法
3万
查看次数

96
推荐指数
2
解决办法
4万
查看次数

如何在Web MVC应用程序中实现访问控制列表?

第一个问题

请问,您能解释一下在MVC中如何实现最简单的ACL.

这是在Controller中使用Acl的第一种方法......

<?php
class MyController extends Controller {

  public function myMethod() {        
    //It is just abstract code
    $acl = new Acl();
    $acl->setController('MyController');
    $acl->setMethod('myMethod');
    $acl->getRole();
    if (!$acl->allowed()) die("You're not allowed to do it!");
    ...    
  }

}
?>
Run Code Online (Sandbox Code Playgroud)

这是一个非常糟糕的方法,它的缺点是我们必须将Acl代码添加到每个控制器的方法中,但我们不需要任何其他依赖项!

接下来的方法是制作所有控制器的方法private并将ACL代码添加到控制器的__call方法中.

<?php
class MyController extends Controller {

  private function myMethod() {
    ...
  }

  public function __call($name, $params) {
    //It is just abstract code
    $acl = new Acl();
    $acl->setController(__CLASS__);
    $acl->setMethod($name);
    $acl->getRole();
    if (!$acl->allowed()) die("You're not allowed to do it!"); …
Run Code Online (Sandbox Code Playgroud)

php oop model-view-controller acl

94
推荐指数
3
解决办法
3万
查看次数

如何在Backbone中获取单个模型?

Clock在Backbone中有一个模型:

var Clock = Backbone.Model.extend({});
Run Code Online (Sandbox Code Playgroud)

我正在尝试获取具有最新信息的实例/clocks/123.我试过的一些事情:

一个"类"级方法

Clock.fetch(123)
// TypeError: Object function (){ ... } has no method 'fetch'
Run Code Online (Sandbox Code Playgroud)

创建一个实例,然后调用fetch它:

c = new Clock({id: 123})
c.fetch()
// Error: A 'url' property or function must be specified
Run Code Online (Sandbox Code Playgroud)

一个集合

我尝试创建一个AllClocks集合资源(即使我在页面上没有使用这样的东西):

var AllClocks = Backbone.Collection.extend({
  model: Clock,
  url: '/clocks/'
});
var allClocks = new AllClocks();
allClocks.fetch(123);
// returns everything from /clocks/
Run Code Online (Sandbox Code Playgroud)

我如何才能获得一个支持API的时钟?

javascript rest model-view-controller backbone.js

93
推荐指数
4
解决办法
8万
查看次数

如何将参数传递给ASP.NET MVC中的局部视图?

假设我有这个局部视图:

Your name is <strong>@firstName @lastName</strong>
Run Code Online (Sandbox Code Playgroud)

这可以通过仅限儿童的动作来访问:

[ChildActionOnly]
public ActionResult FullName(string firstName, string lastName)
{

}
Run Code Online (Sandbox Code Playgroud)

我想在另一个视图中使用这个局部视图:

@Html.RenderPartial("FullName")
Run Code Online (Sandbox Code Playgroud)

换句话说,我希望能够将firstName和lastName从视图传递到局部视图.我该怎么办?

model-view-controller asp.net-mvc controller asp.net-mvc-partialview asp.net-mvc-3

87
推荐指数
5
解决办法
15万
查看次数

脂肪模型和瘦小的控制器听起来像创造神模型

我一直在阅读很多博客,主张胖模型和瘦控制器方法,尤其是.Rails阵营.因此,路由器基本上只是找出在什么控制器上调用什么方法,并且所有控制器方法都在调用模型上的相应方法然后调出视图.所以我在这里有两个我不明白的问题:

  1. 控制器和路由器实际上没有做太多不同的任务,只是根据路线调用类似神的模型上的方法.
  2. 模特做得太多了.发送电子邮件,创建关系,删除和修改其他模型,排队任务等.现在基本上你有类似神的对象,应该做任何与建模和处理数据有关或可能不关心的事情.

你在哪里划线?这不仅仅是落入神模式吗?

architecture model-view-controller design-patterns god-object

87
推荐指数
2
解决办法
3万
查看次数

"业务逻辑层"在哪里适合MVC应用程序?

首先,在任何人尖叫之前,我很难总结一个简单的标题.另一个标题可能是"域模型和MVC模型之间有什么区别?" 或"什么是模特?"

从概念上讲,我理解一个Model是视图和控制器使用的数据.除此之外,关于构成模型的内容似乎存在很多不同的意见.什么是域模型,应用模型,视图模型,服务模型等.

例如,在我最近提出的关于存储库模式的问题中,我被告知空白存储库是模型的一部分.但是,我已经阅读了其他意见,即模型应该从持久性模型和业务逻辑层中分离出来.毕竟,是不是存储库模式应该将具体的持久性方法与模型分离?其他人说Domain模型和MVC模型之间存在差异.

我们举一个简单的例子.MVC默认项目中包含的AccountController.我已经阅读了一些意见,其中包含的帐户代码设计不佳,违反了SRP等等.如果要为MVC应用程序设计一个"适当的"成员模型,那会是什么?

您将如何从模型中分离ASP.NET服务(成员资格提供程序,角色提供程序等)?或者你会吗?

我看待它的方式,模型应该是"纯粹的",也许是验证逻辑..但应该与业务规则分开(除了验证).例如,假设您有一条业务规则,说明在创建新帐户时必须通过电子邮件发送某人.在我看来,这并不属于模型.那它属于哪里?

有人关心这个问题吗?

model-view-controller asp.net-mvc design-patterns business-logic-layer

85
推荐指数
2
解决办法
3万
查看次数

差异执行如何工作?

我在Stack Overflow上看到了一些这样的提及,但是盯着维基百科(相关页面已被删除),并且在一个MFC动态对话框演示中没有任何启发我.有人可以解释一下吗?学习一个根本不同的概念听起来不错.


根据答案:我认为我对此有了更好的感受.我想我第一次没有仔细查看源代码.在这一点上,我对差异执行情有不同的看法.一方面,它可以使某些任务变得相当容易.另一方面,启动并运行(即,用您选择的语言设置)并不容易(我确信如果我更好地理解它)...虽然我猜它的工具箱只需要制作一次,然后根据需要进行扩展.我认为为了真正理解它,我可能需要尝试用另一种语言实现它.

language-agnostic model-view-controller differential-execution

81
推荐指数
3
解决办法
2万
查看次数

使用Node.js构建网站的最佳实践

我想知道如何用Node.js从头开始开发一个网站.我理解我怎么可能这样做,但我对最好的设计实践很感兴趣.

我需要这个理论网站:

  1. 做了很多AJAX
  2. 非常直截了当
  3. 相对较小
  4. 连接到...让我们说一个MySQL服务器

在PHP中,构建一个非常小的网站非常简单 - 我在Apache和MySQL服务器上设置PHP然后执行以下操作:

  • includes/db/ 其中有connect.php用于连接数据库,具有常见数据库相关功能的文件等等
  • includes/layout/ 有像footer.php,header.php和其他布局相关的东西
  • includes/users/ 处理用户相关的操作

那么PHP只是让你构建页面并将这些文件包含在一起形成一个网站 - 我可以这样:

<?php
   require_once('inclues/users/user_session.php');
   require_once('inclues/db/connect.php');
   require_once('inclues/design/header.php')
?>

// Other php or html or related content relating to the page

<?php
   require_once('inclues/.../footer.php');
?>
Run Code Online (Sandbox Code Playgroud)

我想知道Node.js中可能有什么相似之处 - 我正在寻找一种方法来实现这一点,尽可能简单,快速直接.

如果答案不简单,我会喜欢推荐书,我不介意阅读.

我喜欢基于事件的编程,我非常喜欢JavaScript的能力,我对Node.js感到非常兴奋.我想学习如何从一开始就以正确的方式开发这种东西.

javascript model-view-controller node.js

79
推荐指数
1
解决办法
8万
查看次数

Sails.js vs Meteor - 两者有什么好处?

我一直在阅读Nodejs及其框架,并且最近完成了我的第一个完整的javascript前端(使用Angularjs).

我决定使用以下两个框架中的一个来进行我的下一个宠物项目:Nodejs冒险:

我已经读到了这两个,但仍然无法完全理解他们的差异,为什么我应该选择使用一个而不是另一个.所以请戴上你最好的推销员帽子,选择一个框架,然后把它卖给我.

我的宠物项目需要的一些功能是:

  • 现场比分
  • 类似Reddit的线程,实时
  • 类似维基百科的页面版
  • 用户/角色

javascript model-view-controller node.js meteor sails.js

79
推荐指数
4
解决办法
5万
查看次数