模型层的封装

模型层封装的原则

介绍:

  模型层,也就是Model这一层,用来封装对数据库操作的封装

  由于现在主流的编程思想还是OOP面向对象编程,也就是说项目的基本单位就是一个一个类文件,那么如何使用面向对象思想封装对数据库操作呢?

  一张数据表对应一个模型类,然后将数据表的增删改查操作,封装到模型类的成员方法中:

  

根据上面的指导思想,我们来创建模型类:为了方便用户通过类名标识出该类时控制器还是模型,我们每次创建类的时候,通过增加后缀来区分,例如:控制器的后面统一加上:Controller,模型类后面统一加上Model

我们以用户表为例,我们先常见用户模型类:UserModel.class.php

上面的代码还有优化余地:将来不仅在user_select方法中使用dao对象执行sql语句,在下面的这些方法中,都需要使用到dao对象,所以我们可以将初始化dao对象的代码封装到构造方法中。

基础模型类

将来我们的项目中还会有其他的数据表、模型类,例如:我们的商品模型类中也需要使用dao对象执行sql语句,所以我们又可以将多个模型类中公共的代码封装到基础模型类中,然后让这些类继承这个基础的模型类

工厂类实例化单例对象

  之前我们使用三私一公的方式实例化单例模型对象,但是我们的模型类如果使用三私一公的话,需要在每个类里面都得定义三个私有的成员和一个公共的成员才能实例化一个单例对象,这个流程比较繁琐,所以我们采用下面的工厂模式实例化单例对象:

什么是工厂模式呢?

顾名思义,就是根据传递的进来的模型类,给你生成单例对象

但是演示了一把,发现上面生成了3个对象

原因在于$model_list是一个普通的变量,每次执行完M方法,里面的变量都会被释放掉,所以下一次在调用M方法的时候,会重新判断

所以我们将$model_list定义为静态的变量,这样,当方法执行完毕会将执行的结果保存起来,直到PHP脚本执行完毕

自定义MVC框架---第二章的更多相关文章

  1. 自定义MVC框架---第一章

    MVC基本介绍 介绍:  mvc是一种编程思想,用来解决开发项目的时候,代码如何编写,项目如何架构的问题,更具体一点就是解决多人协同开发时,如何分工协作的问题,从而提升开发效率 举一个例子:有一个人想 ...

  2. 第一章 自定义MVC框架

    第一章  自定义MVC框架1.1 MVC模式设计    组成:Model:模型,用于数据和业务的处理          View :视图,用于数据的显示          Controller:控制器 ...

  3. Java Web自定义MVC框架详解 (转)

    转自:http://blog.csdn.net/jackfrued/article/details/42774459 最近给学生讲Java Web,希望他们能够在学完这部分内容后自己实现一个MVC框架 ...

  4. 自定义MVC框架

    我们在学习自定义MVC框架的时候常常会听到Model1 ,Model2和MVC.那么什么是Model1 什么是Model2什么又是MVC呢? 什么是Model1? Model1就是一种纯jsp开发技术 ...

  5. Struts2 自定义MVC框架

    一.Model1与Model2: Model1:就是一种纯jsp开发技术,将业务逻辑代码和视图渲染代码杂糅在一起. Model2:Model2是在Model1的基础上,将业务逻辑的代码分离开来,单独形 ...

  6. 自定义MVC框架之工具类-模型类

    截止目前已经改造了5个类: ubuntu:通过封装验证码类库一步步安装php的gd扩展 自定义MVC框架之工具类-分页类的封装 自定义MVC框架之工具类-文件上传类 自定义MVC框架之工具类-图像处理 ...

  7. 自定义MVC框架之工具类-图像处理类

    截止目前已经改造了4个类: ubuntu:通过封装验证码类库一步步安装php的gd扩展 自定义MVC框架之工具类-分页类的封装 自定义MVC框架之工具类-文件上传类 图像处理类: 1,图片加水印处理( ...

  8. 自定义MVC框架之工具类-文件上传类

    截止目前已经改造了3个类: ubuntu:通过封装验证码类库一步步安装php的gd扩展 自定义MVC框架之工具类-分页类的封装 该文件上传类功能如下: 1,允许定制上传的文件类型,文件mime信息,文 ...

  9. 使用Intellij Idea自定义MVC框架

    ---恢复内容开始--- 今天我学习了自定义一个简单的MVC框架,这个我们首先要知道什么是MVC框架! MVC框架: MVC全名是Model View Controller,是模型(model)-视图 ...

随机推荐

  1. linux应用态下的时间

    1.时间值 1.1 日历时间(UTC) 该值是自1 9 7 0年1月1日0 0 : 0 0 : 0 0以来国际标准时间( U T C)所经过的秒数累计值(早期的手册称 U T C为格林尼治标准时间) ...

  2. 《程序设计实践》【PDF】下载

    <程序设计实践>[PDF]下载链接: https://u253469.ctfile.com/fs/253469-231196319 内容简介 本书从排错.测试.性能.可移植性.设计.界面. ...

  3. 初探Azure的保留实例(Reserved Instance)

    最近的Ignite 2017宣布了Azure将在年底推出保留实例(Reserved Instance).虽然在没有RI的这些年,Azure的EA Monetary Commitment同样也提供了和R ...

  4. http中的get和post(一)

    GET和POST有什么区别?及为什么网上的多数答案都是错的. 如果有人问你,GET和POST,有什么区别?你会如何回答? 我的经历 前几天有人问我这个问题.我说GET是用于获取数据的,POST,一般用 ...

  5. AutoLayout的几种方法

    1.XIB 2.Fram 3.屏幕比例适配(个人比较推荐)  iOS屏幕适配(尺寸适配) 4.NSLayoutConstraint. 5.Masonry  概述 使用 Objective-C 纯代码编 ...

  6. Say Hello to ConstraintLayout

    ConstraintLayout介绍 ConstraintLayout让你可以在很平的view结构(没有多层布局嵌套)中构建一个复杂的布局结构. 有点像RelativeLayout, 所有的view都 ...

  7. BZOJ1798 AHOI2009 维护数列

    1798: [Ahoi2009]Seq 维护序列seq Time Limit: 30 Sec  Memory Limit: 64 MB Description 老师交给小可可一个维护数列的任务,现在小 ...

  8. Mobiscroll的介绍【一款兼容PC和移动设备的滑动插件】

    Mobiscroll是一个用于触摸设备的日期和时间选择器,它的使用不会改变HTML5.PhoneGap以及混合应用的原生用户体验.作为一款jQuery滑动选择插件,用户可以自定义主题样式,为自己的移动 ...

  9. jquery学习总结(超级详细)

    本文仅针对jquery的部分知识点做总结,更为全面的可以去官网看中文文档.可以更为详细的了解jquery及其特性.       window.onload $(document).ready() 执行 ...

  10. Xamarin.Android 怎么定义一个按钮和返回键功能一样回到上一个界面

    https://zhidao.baidu.com/question/570934367.html页面之间的跳转有startActivity 和startActivityForResult两种,star ...