zoukankan      html  css  js  c++  java
  • PHP 常见工厂设计模式

    一、工厂模式
    是一种类,它具有为您创建对象的某些方法。您可以使用工厂类创建对象,而不直接使用 new。这样,如果您想要更改所创建的对象类型,只需更改该工厂即可。使用该工厂的所有代码会自动更改。

    下面代码为显示工厂类的一个示列。等式的服务器端包括两个部分:数据库和一组 PHP 页面,这些页面允许您添加反馈、请求反馈列表并获取与特定反馈相关的文章。

    IUser 接口定义用户对象应执行什么操作:

    interface IUser
    {
      function getName();
    }

      IUser 的实现称为 User:

    class User implements IUser
    {
      public function __construct( $id ) { }
     
      public function getName()
      {
        return "Jack";
      }
    }

      UserFactory 工厂类则创建 IUser 对象:

    class UserFactory
    {
      public static function Create( $id )
      {
        return new User( $id );
      }
    }

      测试代码会向工厂请求 User 对象,并输出 getName 方法的结果:

    $pr = UserFactory::Create( 1 );
    echo( $pr->getName()."
    " );

      有一种工厂模式的变体使用工厂方法。类中的这些公共静态方法构造该类型的对象。如果创建此类型的对象非常重要,此方法非常有用。例如,假设您需要先创建对象,然后设置许多属性。此版本的工厂模式会将该进程封装在单个位置中,这样,不用复制复杂的初始化代码,也不必将复制好的代码在在代码库中到处粘贴。

    interface IUser //接口
    {
      function getName();
    }
     
    class User implements IUser
    {
      public static function Load( $id ) //静态函数
      {
            return new User( $id );
      }
    
      public static function Create( ) //静态函数
      {
            return new User( null );
      }
    
      public function __construct( $id ) { }//构造函数
     
      public function getName()
      {
        return "Jack";
      }
    }
     
    $uo = User::Load( 1 );
    echo( $uo->getName()."
    " );
  • 相关阅读:
    ref out param 区别
    SQL语句执行顺序以及oracle基本查询优化
    Ext.LoadMask遮罩的效果几种实现方式
    用ajax技术实现无闪烁定时刷新页面
    ExtJs 实现动态列,动态多表头 在这里添加日志标题
    Ajax中文乱码问题解决方法(服务器端用servlet)
    订购国际机票的常用指令
    ETERM航班销售控制指令
    线程wait()和sleep()的区别
    JSt中对象的prototype属性
  • 原文地址:https://www.cnblogs.com/sztx/p/9499772.html
Copyright © 2011-2022 走看看