**1、什么是工厂方法模式?**
动态的根据传递的数据,新建相应的类的对象,我是这么理解的。
**2、在什么情况下使用工厂模式?**
.只有运行时才知道需要构造那种类型的对象。
.可以轻松添加一种新类型
.每种类型都需要不同的方法
**3、优缺点**
优点:工厂方法模式可以允许系统在不修改工厂角色的情况下引进新产品。
缺点:客户可能仅仅为了创建一个特定的ConcreteProduct对象,就不得不创建一个Creator子类
**4、工厂方法模式实例:**
~~~
<?php
/*
*工厂方法模式
*--------------------
*@author liuxinming<1235355@qq.com>
*@time 2012-06-21
*/
//抽象工厂类
abstract class AbstractUser{
abstract function getUsername();
abstract function getUserID();
abstract function getUserIntegral();
}
//工厂实现
class UserInfo extends AbstractUser{
//姓名
function getUserName(){
return 'Liuxinming';
}
//ID
function getUserId(){
return 1;
}
//积分
function getUserIntegral(){
return 10;
}
}
echo UserInfo::getUserName()."<br>";
echo UserInfo::getUserId()."<br>";
echo UserInfo::getUserIntegral();
?>
~~~
PS:这是个比较简单的工厂方法模式类,后续会不断对此类进行改进 以及加入抽象工厂模式。
每天学习PHP设计模式进行中...,坚持每天介绍和学习一个设计模式。
- 前言
- PHP生成对象之设计模式—单例模式
- PHP生成对象之设计模式—工厂方法模式
- PHP之设计模式—适配器模式
- PHP之设计模式—建造者模式(通过选择mysql,mongo数据库链接类型做说明)
- PHP之设计模式—委托模式
- PHP面向对象学习一:对象基础实践
- PHP面向对象学习之二:深入了解面向对象高级特性
- PHP面向对象学习之三:抽象类和接口类的实际作用
- PHP解决问题进化论(整理笔记)
- PHP7新特性整理介绍篇
- php-fpm 与 Nginx优化总结
- Centos+Nginx+PHP7.0编译安装(和PHP5.6老版本共存)
- PHP7:Mongodb API使用
- PHP之include/require深入了解
- PHP内核了解:生命周期及运行模式