MVC - 模型应该承担多少责任?

时间:2017-03-04 14:21:18

标签: model-view-controller models

我正在学习MVC(实际上是OOP),并在网上找到了很好的基本概述,但是当我进入一个复杂项目的细节时,我有点不紧张。

我已经设置了一个基本的'用户'模型如下。我想知道模型在什么时候有太多责任?当这种情况发生时,有哪些选择?你应该有子模型 - 例如UserLoginModel而不是一个包罗万象的用户模型?

PS似乎无法粘贴代码,因此它将全部停留在代码块中 - 抱歉。

[uwsgi]
http-socket = 0.0.0.0:8000
chdir = /app
master = true
processes = 4
cheaper = 2
chmod-socket = 664
env = DJANGO_SETTINGS_MODULE=config.settings.local
module = config.wsgi:application
vacuum = true

类UserModel {

//USER MODEL

}

//验证控制器 - 接收请求/ AuthController / doLogin

类AuthController {

private $userId;

private $userName;

private $address

private $email

private $password;

/**
* Some instance of a DB class
*/
private $db;

/**
* Some encryption class which can generate cipher text
*/
private $encryption;

public function __construct($databaseClass){

    //some database layer like a table gateway
    $this->db = $databaseClass;

    //some encryption class which can be used to test a password against a cipher
    $this->enc = $encryptionClass;
}

/*
    GETTERS/SETTERS...  
*/


public function findUser($username){

    // 1. Find user in database
    // 2. Map database array to properties
    // 3. Return boolean
}

public function validateLogin($password){

    // 1. Turn $pasword into cipher text using $this->enc class
    // 2. Match User object password
    // 3. Return boolean
}


public function updateUser($data){
    //some code for updating the user
}

public function deleteUser($user){
    //code for deleting user
}

}

1 个答案:

答案 0 :(得分:0)

模型是设计模式的核心组成部分。它表示应用程序在问题域方面的行为,与用户界面无关。它直接管理应用程序的数据,逻辑和规则。

模型中必须具备所有功能和职责。

Controller接受输入并将其转换为模型或视图的命令。它将通过模型获得函数和/或方法。

视图可以是信息的任何输出表示,也可以是用户输入的数据。

Example of MVC Class Diagram

StudentView将是一个可以在控制台上打印学生详细信息的视图类,而StudentController是负责在Student对象中存储数据的控制器类,并相应地更新视图StudentView。