利用抽象工厂模式和策略模式组织网站业务模型层的实践.doc_第1页
利用抽象工厂模式和策略模式组织网站业务模型层的实践.doc_第2页
利用抽象工厂模式和策略模式组织网站业务模型层的实践.doc_第3页
利用抽象工厂模式和策略模式组织网站业务模型层的实践.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

利用抽象工厂模式和策略模式组织网站业务模型层的实践张亚南在网站制作过程中,我们可能遇到不同的对象进行不同处理的。如何做到代码复用的最大化,提高开发速度?软件设计思想中重要的设计原则可以给我们一些提示。1、 分离变化。网站中,表结构在变化,但是对表的操作无非增删查改,因此我们有了将数据库结构和数据操作分开的想法,于是有了Row类及其不断变化的子类和不变的Db类。对于一个数据结构既定的网站,其资源一定,当时对资源的操作随着需求变化而不断增加,因此我们有理由将资源对象获取合适的资源操作方法与具体的资源操作方法分开。并有资源根据需求去注册资源操作方法。这是抽象工厂模式。丰富网站功能就是丰富资源操作方法,每个操作方法就是一个一种业务。编写大量的业务集合供控制层调用,这是策略模式。控制层根据用户请求,才做不同的资源,使用不同的方法。2、 编程过程中针对Recourse和ActionAdapter两个抽象类进行操作,无论当前是什么操作方法,自用调用对应的接口方法,就可以了。这符合针对接口编程的原则。一、 模型二、 重要源码1、 Recourse 类 资源类abstract class recoursevar $row;var $db ;const LOCK = 1;/锁定const UNLOCK = 2;/解锁const ADDNEW = 3;/添加const DELETE = 4;/删除/abstract function getAction($type);function setRow($row)$this-row = $row;function _construct($db,$row)$this-db = $db;$this-setRow($row);2、 ActionAdapter 类 资源操作类 data的形式、规格需要事先说明abstract class ActionAdapter var $recourse = null;var $data = null;function setRecourse($recourse)$this-recourse = $recourse;function setData($data)$this-data = $data;abstract function checkData();abstract function run();function _construct($recourse=null,$data=null)if($recourse)$this-setRecourse($recourse);if($data)$this-setData($data);三、 测试方法1、 ArticleObj类 一种资源,重写getAction方法,是变化的部分class ArticleObj extends Recoursefunction getAdapt ($type)$action = null;switch($type)case Recourse:DELETE :include_once dirname(_FILE_)./ArticleRemoveAdapter.php;$action = new ArticleRemoveAdapter($this);break;/if($action = null)throw Exception(您的请求不正确,1);return $action;2、 ArticleRemoveAdapter类 具体的资源操作方法,是不变的部分。Data应该是一个对应的id。class ArticleRemoveAdapter extends ActionAdapter public function run()if(!$this-checkData()throw Exception(数据不符合要求,2); foreach($this-recourse-row-col as $value) $value-colValue = null; $head = $this-recourse-row-getHead(); /获取字段头 $this-recourse-row-col$head.id-colValue=$this-data;/调用Db的删除方法,删除id对应的资源 return $this-recourse-db-delete($this-recourse-row,$this-recourse-row-col$head.id); /根据实际需求,重写数据完整性检查方法public function checkData()return DataCheck:checkInteger($this-data);3、 主流程/建立数据库连接$db = new Db(mysql:host=localhost;dbname=db,user,password);/实例化数据库结构类$art = new Article();/实例化一个文章资源对象$ ArticleObj = new ArticleObj ($db,$art); /文章资源对象中获取对应删除操作的操作类$ ArticleObjRemoveAdapt = $ ArticleObj-getAdapt(recourse:DELETE);/向操作类中填入数据$id = 1;$ ArticleObjRemoveAdapt-setData($id)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论