php设计模式-工厂模式
来源:互联网 发布:网络歌曲想问问你 编辑:程序博客网 时间:2024/05/16 17:27
工厂模式:
是一种类,建立了一个工厂来根据所需来创建对象,这种方式在多态性编程中是很重要的,允许动态替换类,修改配置等。
简单工厂模式:
通过静态方法创建对象。可以理解成,只负责生产同一等级结构中的任何一个产品,但是不能新增产品。
简单工厂模式例子:
//工厂接口interface UserInterface{ function getUserName(); function getName(); function getJob();}//实现工厂接口class User implements UserInterface{ private $UserName; private $Name; private $Job; public function __construct($UserName,$Name,$Job){ $this->UserName=$UserName; $this->Name=$Name; $this->Job=$Job; } function getUserName(){ return $this->UserName; } function getName(){ return $this->Name; } function getJob(){ return $this->Job; }}//静态调用对象返回实例化class UserFactory{ static public function getUser($list){ return new User($list['UserName'], $list['Name'], $list['Job']); }}$list=array('UserName'=>'username','Name'=>'name','Job'=>'Job');$User=UserFactory::getUser($list);echo $User->getUserName();
工厂方法模式:
去掉了简单工厂模式中方法的静态属性,使其可以被子类集成,定义一个创建对象的接口,让子类去决定实例化哪个类。用来生产同一等级结构中的固定产品,但是支持增加产品。
工厂方法模式:interface UserInterface{ //定义工厂接口 function getUserName(); function getName(); function getJob();}interface CreateUser{ function Create($list);}class User implements UserInterface{ private $UserName; private $Name; private $Job; public function __construct($UserName,$Name,$Job){ $this->UserName=$UserName; $this->Name=$Name; $this->Job=$Job; } function getUserName(){ return $this->UserName; } function getName(){ return $this->Name; } function getJob(){ return $this->Job; }}class UserFactory{ private $User; public function __construct($list){ $this->User=new User($list['UserName'],$list['Name'],$list['Job']); } public function getUser(){ return $this->User; }}class MainFactory implements CreateUser{ public function Create($list){ return new UserFactory($list); }}class clientUser{ static public function getclient($list){ $Main=new MainFactory; $User_t=$Main->Create($list); echo $User_t->getUser()->getUserName(); }}$list=array('UserName'=>'aa','Name'=>'cc','Job'=>'dd');$get_Client=clientUser::getclient($list);
抽象工厂模式:
提供一个创建一系列相关或者相互依赖的对象的接口。可以理解成,用来生产不用类型的全部产品,但是不能增加新品,支持增加新的类型。
抽象工厂模式例子:
//定义工厂基本接口interface UserInterface{ function getUserName(); function getGender(); function getJob();}/** * 将User对象创建抽象成一个接口 UserCreate * createOpen内向创建 * createInfo外向创建 */interface UserCreate{ function createOpen($list); function createInfo($list);}//对象实现工厂基本接口class User implements UserInterface{ private $UserName; private $Gender; private $Job; public function __construct($UserName,$Gender,$Job){ $this->UserName=$UserName; $this->Gender=$Gender; $this->Job=$Job; } function getUserName(){ return $this->UserName; } function getGender(){ return $this->Gender; } function getJob(){ return $this->Job; }}//工厂:User对象实例化保存到User属性里面class UserFactory{ private $User; public function __construct($list){ $this->User=new User($list['UserName'],$list['Gender'],$list['Job']); } public function getUser(){ return $this->User; }}//实现对象抽象接口class MainFactory implements UserCreate{ function createOpen($list){ return new UserFactory($list); } function createInfo($list){ return new UserFactory($list); }}class clientUser{ //客户端调用 static public function getclientUer($list){ $main=new MainFactory; $Users=$main->createOpen($list); echo $Users->getUser()->getUserName(); }}/** * 定义数组必须有键值对并且键的值必须有 * UserName,Gender,Job这三项。 */$list=array( 'UserName'=>"aaaa", 'Gender'=>"dddd", 'Job'=>"eeee");/** * 实例化clientUser类 * 调用静态方法 */$new=new clientUser();$new->getclientUer($list);//$new=clientUser::getclientUser($list);也可以这样写
阅读全文
0 0
- 【PHP设计模式】工厂模式
- php设计模式:工厂模式
- php设计模式 工厂模式
- PHP设计模式-工厂模式
- php设计模式-工厂模式
- PHP设计模式-工厂模式
- php设计模式:工厂模式,
- PHP设计模式---工厂模式
- PHP设计模式-工厂模式
- php设计模式-工厂模式
- php设计模式---工厂模式
- PHP设计模式---工厂模式
- PHP设计模式-工厂设计模式
- PHP 常见工厂设计模式
- PHP 常见工厂设计模式
- PHP 常见工厂设计模式
- PHP设计模式之工厂
- PHP设计模式系列 - 工厂模式
- 你怎么看待《在今天这个故事里,阿里巴巴就是四十大盗》
- 上层应用开发是否真的没有底层开发有前途?
- 默认构造函数和构造函数重载
- 一款基于ijkplayer框架的音乐播放器(已开源)
- 搭建lnmp环境(nginx1.9.15-源码)
- php设计模式-工厂模式
- 时间复杂度和空间复杂度
- 搭建lnmp环境(php7.1.8-源码)
- codevs 1282 约瑟夫问题 大暴力? 解题报告
- 搭建lnmp环境(mysql5.7-yum)
- 支持向量机(一)——线性可分支持向量机
- bzoj1025 [SCOI2009]游戏(置换+分组背包)
- JSP(1)—基础知识
- 销售罗盘,这家无法定义的公司究竟在干什么事?