MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。

  • Model(模型)-是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。
  • View(视图) -是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。
  • Controller(控制器) - 是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
    MVC 分层有助于管理复杂的应用程序,因为您可以在一个时间内专门关注一个方面。例如,您可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。
MVC 分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。
 
    以C++代码为例,设计英雄(Hero)对战demo。Hero1对Hero2进行攻击,Hero2不断掉血,UI同步更新。
 
    主要三个类,分别为Hero(英雄数据类),HeroView(英雄UI类,如血条)和HeroController(英雄控制器类,Hero管理类)。
 
    Hero类:
 1 #pragma once 
 2 
 3 class Hero
 4 {
 5 public:
 6     Hero();
 7     ~Hero();
 8     //be attacked
 9     void beAttack(int att);
10     //is dead?
11     bool dead() { return m_nHp == 0; }
12 public:
13     //set no
14     void setNo(std::string no) { m_sNo = no; }
15     //get no
16     std::string getNo() { return m_sNo; }
17 
18     //set name
19     void setName(std::string name) { m_sName = name; }
20     //get name
21     std::string getName() { return m_sName; }
22 
23     //get hp
24     void setHp(int hp) { m_nHp = hp; }
25     //set hp
26     int getHp() { return m_nHp; }
27     
28     //set att
29     void setAtt(int att) { m_nAtt = att; }
30     //get att
31     int getAtt() { return m_nAtt; }
32 private:
33     
34     std::string m_sName;//姓名
35     std::string m_sNo;//游戏场号码
36     
37     int m_nHp;//血量
38     int m_nAtt;//攻击力
39 };
Hero.h
 1 #include "stdafx.h"
 2 #include "Hero.h"
 3 
 4 //ctor
 5 Hero::Hero()
 6 {
 7 }
 8 
 9 //Destructor
10 Hero::~Hero()
11 {
12 
13 }
14 
15 void Hero::beAttack(int att)
16 {
17     if (att <= 0) throw "Att Number <= 0";//safe check
18     m_nHp -= att;
19     m_nHp = m_nHp < 0 ? 0 : m_nHp;//safe check
20 }
Hero.cpp

相关文章: