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 };
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 }