咨询电话:023-88959644    24小时服务热线:400-023-8809
NEWS CENTER ·
新闻动态
关注中技互联 关注前沿

PHP 工厂模式

发表日期:2016-04-27    文章编辑:重庆网站建设小编    浏览次数:332    标签:

  可能一直都以为设计模式只是为Java架构师准备的,实际上,设计模式对于每个人都非常有用。为什么说它们在PHP应用程序中也非常有用?
  接下来让我来解释这些问题。
  设计模式不仅代表着更快开发健壮软件的有用方法,而且还提供了以友好的术语封装大型理念的方法。用较小的示例展示设计模式的价值与功用是非常困难的。这往往有些大材小用的意味,因为模式实际上是在大型代码库中发挥作用的。
  既然已经了解了设计模式以及它们的有用之处,现在我们来看看PHP5的几种常用模式。
  一、工厂模式(Factory Pattern)
  工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。(JAVA中工厂模式分为:简单工厂模式、工厂方法模式、抽象工厂模式)
  工厂就是负责生成对象的类或方法。工厂模式解决了当代码关注于抽象类型时如何创建对象实例的问题。
  在最初的设计模式一书中,许多设计模式都鼓励使用松散耦合。如何理解这个概念?在项目开发中更改一个代码片段时,就会发生问 题,而且往往认为完全不相关的部分也可能出现级联破坏。该问题在于紧密耦合。如果类之间有非常强的依赖性,那么这样的系统就很难维护,因为系统里的一个改 动会引起一连串的相关改动。所以我们需要一组模式使这些类之间能够相互通信,但不希望它们紧密绑定在一起,以避免出现联锁反应(严格意义上讲是叫解耦)。
  在大型系统中,许多代码依赖于少数几个关键类。需要更改这些类时,可能会出现困难。例如,假设您有一个从文件读取的User类,您希望将其更改为从数据库读取的其他类,但是,所有的代码都引用从文件读取的原始类,这时候,使用工厂模式会很方便。
 
举例说明:
<?php
   abstract class IUser { //抽象产品角色
       abstract function getName();
   }
   class User extends IUser { //具体产品角色
       public function getName() {
           return 'Jack';  
       }
   }
   class UserFactory { //工厂类角色
       static public function create() {
           return new User(); //返回实例
       }
   }
   $uo = UserFactory::create();
   echo $uo->getName();
?>
  在简单工厂模式中,一个工厂类处于对产品实例化调用的中心位置上,它决定哪一个产品类应当被实例化,如同一个交通警察站在来往的车辆流中,决定放行哪一个方向的车辆前行。
 
工厂模式的三种角色:
  1.工厂角色(Creator):这是本模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。
  2.抽象产品角色(Product):工厂模式所创建的所有对象的父类。它负责描述所有实例所共有的公共接口。(一般由接口或抽象类来实现)。
  3.具体产品角色(Concrete Product):是工厂模式创建的目标,所有创建的对象都是充当这个角色的某个具体类的实例。(由一个具体类实现)
 
工厂模式的优缺点:
优点:
  1. 简单实用
  2. 利于软件体系结构优化
缺点:
  1. 违反高内聚责任分配原则
  2. 模块功能容易蔓延,不利于系统维护
  有时此类模式在规模较小的环境中似乎有点大材小用,不过,最好还是学习这种扎实的编码形式,以便应用于任意规模的项目中。
  本文由重庆网站建设-中技互联:www.zjcoo.com
如没特殊注明,文章均为中技互联原创,转载请注明来自www.zjcoo.com
上一篇:网站优化这些误区一定要避免 百害而无一利 下一篇:已经是最后一篇了
相关新闻

CopyrightZJCOO technology Co., LTD. All Rights Reserved.    

渝ICP 备11003429号

  • qq客服
  • 公众号
  • 手机版
  • 新浪微博