目录
一、搭建MVC框架
里面的bin、lib、database文件夹以及sqlite3.h与工程后缀为.pro文件的配置与上次发的文章一样,大家可以自行去看,https://mp.csdn.net/mp_blog/creation/editor/145756399
这里我只讲关于MVC框架
- 手动创建model文件夹,这个文件夹下放所有表业务操作类
- 手动创建view文件夹,这个文件夹下放所有窗口UI相关类
- 手动创建control文件夹,这个文件夹下放model管理控制类
- 手动创建data文件夹,这个文件夹下放表对应的数据类,一个表(或视图)就有一个数据类

在不包含control的情况下,这几个之间的关系

二、创建数据库连接单例类SingleDB
功能说明:创建单例、连接数据库
- 构造函数改私有权限,不让其他对象有new当前这个类的机会
- 头文件中编写静态成员、获取单例函数,如下图

3.懒汉式单例
饿汉式单例如果我根本没有使用到这个函数,但是还是会new出一个对象,占用内存空间

三、数据库业务操作类model设计
功能:父类model纯虚函数或虚函数,以及初始化数据库需要的对象
1.先创建一个model父类BaseModel,因为每个表都是有需要增删改查等等业务处理,如果每一个表都写一个处理类,那么类就很多,创建就不方便,所以用父类来统一类型,这个类必须要实现的是数据库连接
2.再创建一个model子类,继承BaseMode。有一个表就可以有一个这样的操作类,例如:UserModel对应用户表操作,VideoMode对应视频表操作.....

3.UserModel子类要去实现父类虚函数或纯虚函数,即继承的多态中对父类成员函数重写,重写函数就为具体的某个业务操作,例如:登录业务、注册业务、分页显示业务....
四、control层,关于model管理类设计
- 创建一个管理类,这个类中做成单例设计模式
- 编写一个创建不同的model操作类的函数,简单工厂设计模式,其实就是通过传入的参数字符串(可以是表名)判断,应该创建什么model类,其实就是多分支选择
注意:该函数返回值必须是model父类的指针,这里运用继承多态,父类指针指向不同子类空间


五、view层即为窗口UI类
- 窗口设计
- 信号和槽
- 槽函数调用control层管理类->创建model子类->操作函数->返回数据类(数据容器)
