<?php /** * 基本工厂模式 * */ class user { private $username; public function __construct($username) { $this->username = $username; } public function getuser() { return $this->username; } } class userfactory { static public function createuser() { return new user('jack'); } } $user = userfactory::createuser();echo $user->getuser(); /** *简单工厂模式 * */ 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(); /** * 工厂方法模式 **/ interface userproperties { function getusername(); function getgender(); function getjob(); } interface createuser { function create($properties); } 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 { private $user; public function __construct($properties = []) { $this->user = new user($properties['username'], $properties['gender'], $properties['job']); } public function getuser() { return $this->user; } } class factoryman implements createuser { function create($properties) { return new userfactory($properties); } } class factorywoman implements createuser { function create($properties) { return new userfactory($properties); } } class clientuser { static public function getclient($properties) { $fac = new factoryman; $man = $fac->create($properties); echo $man->getuser()->getusername(); } } $employers = [ ['username' => 'jack', 'gender' => 'male', 'job' => 'coder'], ['username' => 'marry', 'gender' => 'female', 'job' => 'designer'], ]; $user = clientuser::getclient($employers[0]); /** * 抽象工厂模式 * */ interface userproperties { function getusername(); function getgender(); function getjob(); } interface createuser { //将对象的创建抽象成一个接口 function createopen($properties);//内向创建 function createintro($properties);//外向创建 } 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 { private $user; public function __construct($properties = []) { $this->user = new user($properties['username'], $properties['gender'], $properties['job']); } public function getuser() { return $this->user; } } class factoryman implements createuser { function createopen($properties) { return new userfactory($properties); } function createintro($properties) { return new userfactory($properties); } } class factorywoman implements createuser { function createopen($properties) { return new userfactory($properties); } function createintro($properties) { return new userfactory($properties); } } class clientuser { static public function getclient($properties) { $fac = new factoryman; $man = $fac->createopen($properties); echo $man->getuser()->getusername(); } } $employers = [ ['username' => 'jack', 'gender' => 'male', 'job' => 'coder'], ['username' => 'marry', 'gender' => 'female', 'job' => 'designer'], ]; $user = clientuser::getclient($employers[0]);
相关推荐:
php模式设计之 单例模式
php模式设计之 适配器模式
以上就是php的工厂模式的详细内容。