设计模式
工厂设计模式
概念:具有实例化对象能力的类。可以使用工厂类创建对象,而不直接使用 new。
优点:
- 把创建对象的过程封装起来,随时可以产生一个新的对象。
- 更改所创建的对象类型,只需更改该工厂即可。使用该工厂的所有代码会自动更改。
基本工厂模式
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();
?>
博客主要介绍了工厂设计模式,它是具有实例化对象能力的类,可封装创建对象过程,更改对象类型只需改工厂。还提到简单工厂模式,通过静态方法创建对象,负责生产同一等级结构产品但不能新增,一般包含抽象类、具体类和工厂类。
10万+

被折叠的 条评论
为什么被折叠?



