MVC模式

	MVC模式是一个很重要的模式,简单来讲就是将数据、控制和界面分
成三个部分,表面上是在做一些无聊的无用功,但是将程序这样分割对于
程序的修改和维护具有非常大的帮助,下面我便用我自己的理解来阐述一下
如何实现MVC模式,如有错误,希望大家能在评论区指出,小编加以修改学习。

模型层

自定义类
class Aa
{
private:

// 当前类静态变量
static Aa* myself;

public:
	Aa();

	// 自定义类打印函数
	void print();

	// 获取静态变量函数
	static Aa* get();

};
自定义类的实现

// 初始化静态变量
Aa* Aa::myself = NULL;

// 自定义一个构造函数
Aa::Aa()
{
	myself = NULL;
}

// 自定义类打印函数
void Aa::print()
{ 
	cout << "试验成功" << endl; 
}

// 获取静态变量函数
Aa* Aa::get()
{
	if(myself == NULL)
	{
		myself = new Aa();
	}
	return myself;
}
主函数
int main()
{
	Aa::get()->print();

	return 0;
}
结果

在这里插入图片描述

	对于数据来说,一些小型的系统或者课程设计将数据封装成为一个数组
或者是向量,这是相对来说还可以接受的,但是如果课程设计要求修改代码
的话,那么传统的这种做法在修改维护上就会显现出许多的不足,另外,当
涉及到多个类都要使用这个数据、或者是多线程的时候,传统的数组就会
显示出许多的不足了,如果在加上数据库,那么出现的问题就会更加的繁琐,
所以对于较为复杂的系统,将数据单独摘出来封装在一起是非常有必要的,
	
	对于数据层来说,通常会设置一个静态的当前类的对象:用于共享当前
类所拥有的数据信息、一个数据库对象:用于连接数据库并获取或写入数据、
一个数据缓冲区:用来储存当前计算用到的数据,以及其他用到的一些常量,
	对于静态的当前类对象,很好理解,如果要设置一个数据类要被其他类
所调用的话,那么这个类首先得能够共享数据,而且生命周期还需要和整个
程序的生命周期相对应,这就有很多种方式了,比如将类设置成全局变量
等等,但是为了数据的封装,我所接受的是这种静态类对象的方式,这样的
话,就需要设定一个 get 静态函数来获取这个静态对象,进而调用内部的
一些方法或者进行该对象的实例化。
	对于数据库对象来说,按照当前系统的需要设置变量即可
	对于数据缓冲区,如果数据库中的数据是少量的话,读写速度很快,
那么就没必要设置了,但是对于数据库较大的时候,就需要设置一个数据
缓冲区来减少读写的次数了。

	当然,这只是对于主要数据的封装设定,对于一些常用到的固定常数,
比如一个数组设置了 8 个单位,那么可以将 for(int i = 0; i < 8; ++i)
中的 8 替换成为一个常量,这样维护的时候只需要修改这个常量就可以了

控制层、界面层

	控制层,简单来讲就是操作计算数据的一层,这一层往往会调用上述
设置好的 get 静态函数获取模型层的静态变量,通过这个变量来调用类
的各种方法获取数据,然后将获取到的数据进行操作,之后将获取到的数据
传递到界面层,由界面层来显示数据。对于界面层反馈回来的信息,控制层
也要进行分析计算。
	不过由于控制层计算完的数据本身就需要直接使用,如果采用控制层和
界面层分开的方式的话,势必要将计算后的数据存储到控制层里面,这样数据
既在模型层,又在控制层,不符合将数据封装到模型层的初衷,所以一般来讲
在模型层数据计算完毕之后,顺手将界面更新,而不去重新设置一个界面层。
但是在理论上,控制层和界面层是相互分开的。

MVC模式的好处

	由于MVC模式的数据和操作是完全分离开的,所以当数据发生变化的时候,
如果程序的运行逻辑是不变的,那么就只需要修改模型层的数据就可以了,极
大的简化了维护和修改的成本;当需要修改程序运行逻辑的时候,也只要修改
控制层即可,界面层也类似。
	不过如果对于数组排序这样的简单问题来说,使用传统的数组就能解决,
这个时候如果继续采用MVC模式就有杀鸡用牛刀的感觉了,所以是否使用这个
模式还是取决于所作系统的规模而言的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值