php教程:php设计模式介绍之工厂模式_PHP技巧_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

php教程:php设计模式介绍之工厂模式

作者:黑客防线网安PHP教程基地 来源:黑客防线网安PHP教程基地 浏览次数:0

本篇关键词:模式工厂教程介绍
黑客防线网安网讯:  在面向对象编程中,最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下,new操作符直接生成对象会带来一些问题。举例来说,许多类型对象的创...
  在面向对象编程中,最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的但是在一些情况下,new操作符直接生成对象会带来一些问题举例来说,许多类型对象的创造需要一系列的步骤:你可能需要计算或取得对象的初始设置;选择生成哪个子对象实例;或在生成你需要的对象之前必须先生成一些辅助功能的对象。在这些情况,新对象的建立就是一个“过程”不仅是一个操作像一部大机器中的一个齿轮传动。
  
  问题
  
  你如何能轻松方便地建立这么"复杂"的对象即操作中不需要粘贴复制呢?
  
  解决方法
  
  建立一个工厂(一个函数或一个类方法)来制造新的对象。为了理解工厂的用处,试想以下的不同之处……
  
  代码:
  
  $connection=&newMySqlConnection($user,$password,$database);
  
  ……使你的代码可扩展和更简洁……
  
  $connection=&create_connection();
  
  后者的代码片断集中在和数据库连接的create_connect()工厂上,就像刚才说的一样,使创造数据库连接的过程成为一个简单的操作—就像new操作一样。工厂模式的优点就在创建对象上。它的任务就是把对象的创建过程都封装起来,然后返回一个所需要的新类。
  
  想改变对象的结构和建立对象的方式吗?你只需选择对象工厂,对代码的改变只需要一次就够了。(工厂模式的功能是如此强大,它处于是应用的底层,所以在许多其余的复杂模式和应用中它会不停地出现。)
  
  样本代码
  
  工厂模式封装了对象的建立过程。你可以在对象本身创建对象工厂或者是一个额外的工厂类——这要看你具体的应用。让我们看一个工厂对象的例子。
  
  我们发现下面代码中,数据库连接的那部分屡次出现:
  
  //PHP4
  
  classProduct{
  
  functiongetList(){$db=&newMysqlConnection(DB_USER,DB_PW,DB_NAME);
  
  //...
  
  }
  
  functiongetByName($name){$db=&newMysqlConnection(DB_USER,DB_PW,DB_NAME);
  
  //...
  
  }
  
  //...
  
  }
  
  为什么这样做不好?数据库连接的参数出现的地方太多了,当你把这些参数设成常量,意味着你统一定义并对他们进行赋值,显然这种做法不是很妥当:
  
  你可以轻松地改变连接数据库的参数,但你不能增加或改变这些参数地顺序,除非你把所有连接代码都改了。
  
  你不能轻松的实例化一个新类去连接另一种数据库,比如说PostgresqlConnection。
  
  这样很难单独测试和证实连接对象的状态。
  
  使用工厂设计模式,代码将得到很大的改进:
  
  classProduct{
  
  functiongetList(){
  
  $db=&$this->_getConnection();
  
  //...
  
  }
  
  function&_getConnection(){
  
  returnnewMysqlConnection(DB_USER,DB_PW,DB_NAME);
  
  }
  
  }
  
  先前的类中存在很多调用newMysqlConnection(DB_USER,DB_PW,DB_NAME)的方法,现在都被集中到的_getConnection()方法上。
  
  
    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-17358-1.html
网站维护教程更新时间:2012-09-21 05:17:27  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer