设计模式

博客主要介绍了工厂设计模式,它是具有实例化对象能力的类,可封装创建对象过程,更改对象类型只需改工厂。还提到简单工厂模式,通过静态方法创建对象,负责生产同一等级结构产品但不能新增,一般包含抽象类、具体类和工厂类。

设计模式

工厂设计模式

概念:具有实例化对象能力的类。可以使用工厂类创建对象,而不直接使用 new。

优点

  1. 把创建对象的过程封装起来,随时可以产生一个新的对象。
  2. 更改所创建的对象类型,只需更改该工厂即可。使用该工厂的所有代码会自动更改。

基本工厂模式

class Person
{
    public function run()
    {
        echo '我是人我会跑';
    }
    
}


//工厂设计模式
class factory
{
    public static function getObj($className)
    {
        return new $className;
    }
}

$a = factory::getObj('Person');
$a->run();	
//输出结果:我是人我会跑

简单工厂模式

简单工厂模式,通过静态方法创建对象。只负责生产同一等级结构中的任何一个产品,但是不能新增产品。
简单工厂模式一般有一个抽象类、一个具体类、一个工厂类

<?php 

/*简单工厂模式*/
interface userProperties
{
  function getUsername();
  function getGender();
  function getJob();
}


/**
 * 
 */
class User implements userProperties
{
  private $username;
  private $gender;
  private $job;

  public function __construct($username,$gender,$job)
  {
    $this->username = $username;
    $this->gender = $gender;
    $this->job = $job;
  }


  public function getUsername()
  {
    return $this->username;
  }


  public function getGender()
  {
    return $this->gender;
  }


  public function getJob()
  {
    return $this->job;
  }

}



/**
 * 
 */
class userFactory
{
  static public function createUser($properties = [])
  {
      return new User($properties['username'],$properties['gender'],$properties['job']);
  }

}


  $employers = [
    ['username'=>'jack','gender'=>'male','job'=>'coder'],
    ['username'=>'marry','gender'=>'female','job'=>'designer'],
  ];

  $user = userFactory::createUser($employers[0]);
  echo $user->getUsername();

?>

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值