3match_mvc

MVC

以ecshop的前台为例:

功能一:

首页

购物车数据,商品分类数据,其他的首页需要的数据

功能二:

拍卖活动

购物车数据,商品分类数据,拍卖相关数据

功能三:

团购商品

购物车数据,商品分类数据,团购相关数据

可见,应该数据的处理分离出来,在需要的功能中调用即可!

M:模型  用来操作表的

V : 模版  用来显示页面

C:控制器 调度 操作那个表产生数据 调用哪个模版显示数据

此时,采用三层分离(MVC)的方式来实现比赛列表:

C:功能调度:

M,数据处理

V,结果展示

注意:浏览器需要请求C来获得需要的内容!

以上的划分方式,称之为MVC,项目架构思想!

其中:

M:Model,模型,项目中数据处理(业务逻辑处理)单元。

V:view,视图,项目中结果展示的单元(模板文件)。

C:Controller,控制器,项目中负责某个功能整体流程调度单元。

强调:MVC项目架构思想(项目中代码间的组织关系),不决定语法形式(OOP,面向过程),仅仅决定项目代码分工方式!

特点如下:

浏览器仅仅C控制器交互。

模型M和视图V都被控制器C所调用。

模型M和视图V之间,不存在任何的交互。

辨析:

MVC pk MVC框架?

MVC:架构思想

MVC框架:基于MVC思想架构的一个框架(基础代码的集合)

4match_model

模型层典型实现

典型的MVC框架中,模型层代码组织结构是什么样的!、

模型类

每张表,对应一个操作模型,当前表中的所有操作,都是用该模型完成!

[模型类]每张表的操作模型,由某个模型类实例化而来的对象【语法】。

每个表操作,对应模型对象的一个方法。

模型类的示例代码:

同时修改控制器中,使用模型的方法:

C:

Tip:模型,在项目中,通常指的是模型类的对象,而不是模型类本身。

基础模型类

显而易见,在模型中,可能会出现重用的代码,例如(得到DAO对象过程),而且是每个模型对象的每个方法中都需要!

被其他的具体模型类所继承:

MatchModel

基础模型类中增加,初始化数据库操作对象的功能:

Model.class.php

将实例化好的MYSQLDB类的对象,存储到模型对象的属性上,从而保证,模型类的每个方法中都可以使用该属性。

模型方法中的使用:

MatchModel->getList();

何时调用该初始化DAO的方法?

在实例化模型类对象时,就需要操作数据库,就需要执行初始化DAO的方法。

可见在构造方法中被调用即可:

Model.class.php

此时的模型结构关系:

模型的单例

如果在一个功能(控制器)中,如果使用某个表的多次操作,应该使用该表的一个模型就可以完成全部任务。

如何保证模型的单例?

典型的,可以通过一个单例工厂来实现(为什么不三私一公?是多个(所有的模型类)都需要单例效果)

工厂类:

直接new,不能实现需要的业务逻辑,需要辅助一段代码逻辑代码,才能确定如何去实例化对象,此时需要工厂类。

模型对象的单例效果:

不能在需要模型时直接就实例化,因为不能实现单例效果,需要一段逻辑代码,来判断当前模型类是否已经实例化过,如果实例化过,则直接返回实例化过的对象,否则实例化新的。

代码实现:

增加工厂类:

Factory.class.php

控制器中,为了得到单例对象,则需要通过工厂类的M方法完成:

模型的流程

最新文章

  1. DB2数据库参数建议(AIX)
  2. 如何 判断 设备 是否 连接 上 了 wifi
  3. centos网卡eth1变成eth0修改方法
  4. JavaScript - 倒计时
  5. 【Ajax】实现注册页面判断用户名是否可用的提示—异步加载
  6. Linux 命令 - ps: 显示当前进程的快照
  7. 在图层上使用CATransform3D制做三维动画-b
  8. SQL 时间戳转DateTime类型
  9. mac下升级ruby环境版本
  10. ubuntu桌面环境配置及切换
  11. 论山寨手机与Android联姻 【6】MTK手机的基带芯片
  12. 项目自动构建工具对比(Maven、Gradle、Ant)
  13. ISE14.7兼容性问题集锦
  14. UWP: 在 UWP 中使用 Entity Framework Core 操作 SQLite 数据库
  15. 不能用notepad++编辑器编写python
  16. 【LeetCode每天一题】Merge Intervals(合并区间)
  17. Page Visibility API 页面是否获取焦点 Event: visibilitychange
  18. 浅谈Linux系统运维工程师必备技能
  19. centOS7 vsftp ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS) 启动失败问题?
  20. onbeforeunload 适用DOM 0级,不适用 DOM 2级

热门文章

  1. GO语言开发之路
  2. linux中的操作记录
  3. map_multimap
  4. EF实体类指定部分属性不映射数据库标记
  5. 9、Hadoop配置文件和HDFS垃圾回收
  6. nginx syslog 配置
  7. 开源项目 01 HtmlAgilityPack
  8. 多项式总结&多项式板子
  9. CSS3 之loading动画实现思路
  10. SqlServer 数据库同步的两种方式 (发布、订阅),主从数据库之间的同步