先附上部分代码:

/*
*MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。
*Model(模型) - 模型代表一个存取数据的对象,它也可以带有逻辑,在数据变化时更新控制器。
*View(视图) - 视图代表模型包含的数据的可视化。
*Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。
*/
#include "stdafx.h"
#include<iostream>
#include<string>
#include<vector>
using namespace std;
class View;
class Model; class Controller
{
public:
Controller(Model* model,View* view)
{
this->model=model;
this->view=view;
}
virtual string get_model_msg()=; virtual void set_model_msg(string msg)=; virtual void update()=; protected:
Model* model;
View* view;
};
class Model
{
public:
virtual string getmsg()=;
virtual void setmsg(string msg)=;
protected:
string msg;
};
class Msg:public Model
{
public:
string getmsg()
{
return msg;
}
void setmsg(string msg)
{
this->msg=msg;
} };
class View
{
public:
void show_msg(Controller* co)
{
cout<<co->get_model_msg()<<endl;
}
};
class Manager:public Controller
{
public:
Manager(Model* model,View* view):Controller(model,view){}
string get_model_msg()
{
return model->getmsg();
} void set_model_msg(string msg)
{
model->setmsg(msg);
} void update()
{
view->show_msg(this);
} };

解释一下,不用按照我这种声明抽象类的方法,我只是单纯的为了使用纯虚函数(因为之前的文章说了纯虚函数,采纳SoftwareTeacher给我提的建议,这次用一下。),顺便补充一下纯虚函数的一些注意事项:

纯虚函数声明时的返回值和参数 在子类实现的时候是不能改变的,否则认为没有实现这个纯虚函数,也就是说 实现纯虚函数: 参数,返回值必须保持一致。

我也是初学MVC 说下我的理解:

Model和View受Controller的控制,且每层相互独立,层之间不必关心每层到底是怎样实现的;比如说:开发View的时候你仅仅需要考虑的是如何布局好一个界面,开发Model的时候仅仅要考虑业务逻辑和数据维护,能使开发者专注于某一方面的开发。

附上主函数:

int _tmain(int argc, _TCHAR* argv[])
{
char opt;
Msg* msger=new Msg;
View* view=new View;
Manager manager(msger,view);
while(true)
{
string tempmsg;
cout<<"please input a number"<<endl;
cin>>opt;
switch(opt)
{
case '':
cout<<"please input the change msg"<<endl;
cin>>tempmsg;
manager.set_model_msg(tempmsg); // 通过Controller来改变Model
break;
case '':
manager.update(); //通过Controller来显示View
break;
default:
exit();
break;
}
}
return ;
}

如果有说错的地方欢迎批评指正

设计模式二:MVC的更多相关文章

  1. Android 设计模式之MVC模式

    说到Android设计模式的MVC模式,估计很多人都是比较熟悉了,这里深入了解一下MVC到底是怎么回事,以ListView为例子讲解. 一.深入理解MVC概念 MVC即Model-View-Contr ...

  2. python 设计模式之MVC模式

    一.简单介绍 mvc模式  the  model-view-controller pattern mvc模式是一个运用在软件工程中的设计模式.mvc模式脱离了以前简单的web服务设计逻辑,将开发,测试 ...

  3. 设计模式 ( 二十 ) 访问者模式Visitor(对象行为型)

    设计模式 ( 二十 ) 访问者模式Visitor(对象行为型) 1.概述 在软件开发过程中,对于系统中的某些对象,它们存储在同一个集合collection中,且具有不同的类型,而且对于该集合中的对象, ...

  4. Java 设计模式(二)-六大原则

    Java 设计模式(二)-六大原则 单一职责原则(Single Responsibility Principle) 定义: 不要存在多余一个原因导致类变更,既一个类只负责一项职责. 问题由来: 当类A ...

  5. 8.3 GOF设计模式二: 适配器模式 Adapter

    GOF设计模式二: 适配器模式 Adapter  为中国市场生产的电器,到了美国,需要有一个转接器才能使用墙上的插座,这个转接 器的功能.原理?复习单实例模式  SingleTon的三个关键点  ...

  6. Python设计模式之MVC模式

    # -*- coding: utf-8 -*- # author:baoshan quotes = ('A man is not complete until he is married. Then ...

  7. 一篇文章图文并茂地带你轻松学完 JavaScript 设计模式(二)

    JavaScript 设计模式(二) 本篇文章是 JavaScript 设计模式的第二篇文章,如果没有看过我上篇文章的读者,可以先看完 上篇文章 后再看这篇文章,当然两篇文章并没有过多的依赖性. 5. ...

  8. iOS开发——高级篇——iOS中常见的设计模式(MVC/单例/委托/观察者)

    关于设计模式这个问题,在网上也找过一些资料,下面是我自己总结的,分享给大家 如果你刚接触设计模式,我们有好消息告诉你!首先,多亏了Cocoa的构建方式,你已经使用了许多的设计模式以及被鼓励的最佳实践. ...

  9. mvc设计模式和mvc框架的区别

    Spring中的新名称也太多了吧!IOC/DI/MVC/AOP/DAO/ORM... 对于刚刚接触spring的我来说确实晕了头!可是一但你完全掌握了一个概念,那么它就会死心塌地的为你服务了.这可比女 ...

随机推荐

  1. 浅谈MVC页面之间参数传递

    关于MVC页面之间的传值,有多种方式,下面,我们就Html.RenderAction 方式 和 Html.RenderPartial 方式 来给大家分享一下有什么不同. 一.Html.RenderAc ...

  2. MySQL数据库主从同步配置

    主服务器必须打开开二进制日志. 主要是修改配置文件 , 一般在 linux 下安装的 mysql 配置文件是 my.cnf, 在 windwos 下是 my.ini, 修改主服务器配置文件 serve ...

  3. python数据处理——numpy_2

    上一次的学习了numpy的一些基础操作,今天接着学习numpy的高级索引.轴对换数值转置以及作图. #花式索引 import numpy as np ''' t = np.empty((8,4)) # ...

  4. IDEA第五章----Git常用技能

    前几篇已经介绍了idea的环境搭建及基础配置常用模板等,这一章我们介绍下idea中git的一些常用技能,包括提交文件,排除提交文件,合并分支,解决冲突,还原代码等等等. 第一节:Git常用技能 Git ...

  5. Spring+SpringMVC+MyBatis+easyUI整合优化篇(十三)数据层优化-表规范、索引优化

    本文提要 最近写的几篇文章都是关于数据层优化方面的,这几天也在想还有哪些地方可以优化改进,结合日志和项目代码发现,关于数据层的优化,还是有几个方面可以继续修改的,代码方面,整合了druid数据源也开启 ...

  6. 单Js 的重力游戏开发

    最近在用看cocos的时候萌生的想法,单纯js实现重力原理.然后就做了一个这样的小游戏.姑且命名为<超级玛丽>! 因为之前有人要我做超级玛丽.哈哈哈哈哈哈!这也算完成任务了吧. 先说一下原 ...

  7. IO和socket编程

    五一假期结束了,突然想到3周前去上班的路上看到槐花开的正好.放假也没能采些做槐花糕,到下周肯定就老了.一年就开一次的东西,比如牡丹,花期也就一周.而花开之时,玫瑰和月季无法与之相比.明日黄花蝶也愁.想 ...

  8. poj3067树状数组求逆序数

    Japan plans to welcome the ACM ICPC World Finals and a lot of roads must be built for the venue. Jap ...

  9. SDN学习之OpenFlow协议分析

    学习SDN相关的学习也已经有快半年了,期间从一无所知到懵懵懂懂,再到现在的有所熟悉,经历了许多,也走了不少弯路,其中,最为忌讳的便是,我在学习过程中,尚未搞明白OpenFlow协议的情况下,便开始对S ...

  10. php框架之我见:php开发到底需不要用框架?

    本来就很好,结果无论软件CMS还是各种框架,都自己制造一套自己的规则! 关键还不通用! 我学PHP语法 语义累了半年好不容易熟悉,结果学个框架又学半年,然后框架升级或者去学其他框架,之前学的又等于没用 ...