PHP设计模式:简单工厂
2023-09-14 08:57:25 时间
示例代码详见https://github.com/52fhy/design_patterns
简单工厂
简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。
也就是使用的时候通过传参来确定生成不同的对象。
简单工厂UML图:
简单工厂需要有3个角色:
- Product接口类:用于定义产品规范;
- 具体的产品实现,例如ConcreateProductA、ConcreateProductB;
- 简单工厂类SimpleFactory:用于生成具体的产品。
使用的时候通过传参数给简单工厂类,可以生成想要的产品。
代码:
ICar.php:定义产品规范:
namespace Yjc\SimpleFactory;
interface ICar
{
public function driver();
}
具体产品实现:
namespace Yjc\SimpleFactory;
class Benz implements ICar
{
public function driver()
{
echo 'benz driver.';
}
}
class Bmw implements ICar
{
public function driver()
{
echo 'bmw driver.';
}
}
简单工厂类SimpleFactory:
namespace Yjc\SimpleFactory;
class SimpleFactory
{
public static function makeCar($type){
switch ($type){
case 'benz':
return new Benz();
break;
case 'bmw':
return new Bmw();
break;
default:
throw new \Exception('not support type!');
break;
}
}
}
参数代码:
$car = SimpleFactory::makeCar('benz');
$car->driver();
简单工厂的优点/缺点:
优点:简单工厂模式能够根据外界给定的信息,决定究竟应该创建哪个具体类的对象。明确区分了各自的职责和权力,有利于整个软件体系结构的优化。
缺点:很明显工厂类集中了所有实例的创建逻辑,容易违反GRASPR的高内聚的责任分配原则。
参考:
1、设计模式:简单工厂、工厂方法、抽象工厂之小结与区别 - superbeck的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/superbeck/article/details/4446177
2、简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别 - Danny Chen - 博客园
http://www.cnblogs.com/zhangchenliang/p/3700820.html
相关文章
- 微信授权网页扫码登录php,PHP实现微信开放平台扫码登录源码
- php qrcode 输出乱码怎么解决?
- PHP使用Cookie实现自动登陆
- PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)详解编程语言
- 快速步骤:安装PHP访问Oracle数据库(php安装oracle)
- 基于MySQL的PHP留言板系统开发(php留言板mysql)
- 助力MySQL优化:PHP助力提升效率(mysql优化php)
- 实现【使用Redis实现PHP抢红包迅速拿奖励】(php抢红包redis)
- 简单易学,PHP与MySQL开发初窥门径(php与mysql开发)
- PHP实现MySQL表格删除(php删除mysql表)
- Linux环境下,如何高效、简单地编写PHP代码(linux下写php)
- 「PHP Redis手册:高效有力的操作指南」(php的redis手册)
- PHP中使用Redis简单取值(redis取值php)
- PHP MySQL 操作入门指南(phpmysql操作)
- 优雅式PHP配置MySQL数据库(php 配置 mysql)
- PHP Redis实时监控系统的应用(php redis 监控)
- PHP与MySQL的关联技术(php关联mysql)
- Linux环境下轻松配置PHP:简单指南(linux下配置php)
- Linux上运行PHP文件的简单操作(linux运行php文件)
- PHP面向接口编程耦合设计模式简单范例
- php设计模式Prototype(原型模式)代码
- php入门学习知识点二PHP简单的分页过程与原理
- php中使用接口实现工厂设计模式的代码
- PHP导航下拉菜单的实现如此简单
- php配合jquery实现增删操作具体实例
- 又一个PHP实现的冒泡排序算法分享
- php设计模式之简单工厂模式详解