模型层典型实现
典型的MVC框架中,模型层代码组织结构是什么样的!
模型类
每张表,对应一个操作模型,当前表中的所有操作,都是用该模型完成!
[模型类]每张表的操作模型,由某个模型类实例化而来的对象【语法】。
每个表操作,对应模型对象的一个方法。
模型类的示例代码:
同时修改控制器中,使用模型的方法:
C:
Tip:模型,在项目中,通常指的是模型类的对象,而不是模型类本身。
基础模型类
显而易见,在模型中,可能会出现重用的代码,例如(得到DAO对象过程),而且是每个模型对象的每个方法中都需要!
被其他的具体模型类所继承:
MatchModel
基础模型类中增加,初始化数据库操作对象的功能:
Model.class.php
将实例化好的MYSQLDB类的对象,存储到模型对象的属性上,从而保证,模型类的每个方法中都可以使用该属性。
模型方法中的使用:
MatchModel->getList();
何时调用该初始化DAO的方法?
在实例化模型类对象时,就需要操作数据库,就需要执行初始化DAO的方法。
可见在构造方法中被调用即可:
Model.class.php
此时的模型结构关系:
模型的单例
如果在一个功能(控制器)中,如果使用某个表的多次操作,应该使用该表的一个模型就可以完成全部任务。
如何保证模型的单例?
典型的,可以通过一个单例工厂来实现(为什么不三私一公?是多个(所有的模型类)都需要单例效果)
工厂类:
直接new,不能实现需要的业务逻辑,需要辅助一段代码逻辑代码,才能确定如何去实例化对象,此时需要工厂类。
模型对象的单例效果:
不能在需要模型时直接就实例化,因为不能实现单例效果,需要一段逻辑代码,来判断当前模型类是否已经实例化过,如果实例化过,则直接返回实例化过的对象,否则实例化新的。
代码实现:
增加工厂类:
Factory.class.php
控制器中,为了得到单例对象,则需要通过工厂类的M方法完成:
模型的流程