php八大设计模式之工厂模式
简单点来说,就是用到什么类,就去实例化对应的类。比如:php 可能连接 mysql,可能连接 sqlserver,也可能是 oracle 数据库,可以动态的去链接。
书籍<php权威编程>(英文名称为PHP 5 Power Programming)也提到一个工厂模式的例子:在为用户注册的时候,分为很多种角色的用户。比如册用户,匿名用户、管理员用户等。完全使用可以使用工厂的思想来实现,代码也容易维护,为每种角色可以生成操作的类。
来,看实际代码。比如我们在 like 目录下有一些链接数据库的类:
<?php
// like/Mysql.php
class Mysql{
public function get(){
return "连上了 Mysql 数据库";
}
}
<?php
// like/Oracle.php
class Oracle{
public function get(){
return "连上了 Oracle 数据库";
}
}
<?php
// like/Sqlserver.php
class Sqlserver{
public function get(){
return "连上了 Sqlserver 数据库";
}
}
我们怎么在使用者知道更少的情况下让这些类同时都可以被调用呢?
<?php
header("content-type:text/html;charset=utf8");
/**
* 提供外部一个工厂类
*/
//
spl_autoload_register(function ($name) {
//拼接得到文件所在路径。
$path="./like/".$name.".php";
//判断文件是否存在。
if(!file_exists($path)){
throw new Exception($name."类不存在");
}else{
require_once($path);
}
});
class Factory{
protected static $Object=null;
public static function getObj($type)
{
//将传过来的值首字母大写。
$type=ucfirst($type);
try {
//成功调用相应数据库文件。
Factory::$Object=new $type();
return Factory::$Object;
} catch (Exception $e) {
//访问的文件不存在。
echo $e->getMessage();
die;
}
}
}
//通过工厂类得到所需要的数据库对象。
$f=Factory::getObj("sqlserve");
echo $f->get();
php八大设计模式之工厂模式的更多相关文章
- 设计模式——抽象工厂模式及java实现
设计模式--抽象工厂模式及java实现 设计模式在大型软件工程中很重要,软件工程中采用了优秀的设计模式有利于代码维护,方便日后更改和添加功能. 设计模式有很多,而且也随着时间在不断增多,其中最著名的是 ...
- 5. 星际争霸之php设计模式--抽象工厂模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- 3. 星际争霸之php设计模式--简单工厂模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- iOS 设计模式之工厂模式
iOS 设计模式之工厂模式 分类: 设计模式2014-02-10 18:05 11020人阅读 评论(2) 收藏 举报 ios设计模式 工厂模式我的理解是:他就是为了创建对象的 创建对象的时候,我们一 ...
- 设计模式之工厂模式(Factory)
设计模式的工厂模式一共有三种:简单工厂模式,工厂模式,抽象工厂模式 简单工厂模式原理:只有一个工厂类,通过传参的形式确定所创建的产品对象种类 代码如下: #include <stdio.h> ...
- php设计模式:工厂模式
php设计模式:工厂模式 意图: 定义一个用于创建对象的接口,让子类决定实例化哪一个类. 工厂模式实现: 工厂模式中任何创建对象的工厂类都要实现这个接口,实现接口的方法体中都要实现接口中的方法,它声明 ...
- 浅析JAVA设计模式之工厂模式(一)
1 工厂模式简单介绍 工厂模式的定义:简单地说,用来实例化对象,取代new操作. 工厂模式专门负责将大量有共同接口的类实例化.工作模式能够动态决定将哪一个类实例化.不用先知道每次要实例化哪一个类. 工 ...
- java 设计模式之工厂模式与反射的结合
工厂模式: /** * @author Rollen-Holt 设计模式之 工厂模式 */ interface fruit{ public abstract void eat(); } ...
- C#学习之设计模式:工厂模式
最近研究一下设计模式中工厂模式的应用,在此记录如下: 什么是工厂模式? 工厂模式属于设计模式中的创造型设计模式的一种.它的主要作用是协助我们创建对象,为创建对象提供最佳的方式.减少代码中的耦合程度,方 ...
随机推荐
- tensorflow入门教程和底层机制简单解说——本质就是图计算,自动寻找依赖,想想spark机制就明白了
简介 本章的目的是让你了解和运行 TensorFlow! 在开始之前, 让我们先看一段使用 Python API 撰写的 TensorFlow 示例代码, 让你对将要学习的内容有初步的印象. 这段很短 ...
- VS 2015 C#不能进入断点
工程\属性\生成页面,去掉优化代码勾选.
- ASP.NET MVC5 历史数据查询
在TCX_1706项目中在历史数据库备份及历史数据查询的功能,历史数据包括历史采集数据查询和历史产品数据查询两个 在项目中如何查询历史库的历史表呢? 第一步:在配置文件中添加历史库的链接字符串 第二步 ...
- JavaScript在不同环境下的全局对象
Node.js 环境下,全局的对象是 global. 浏览器下 window === self 而不是 global,今天才发现的,我惊呆了!
- Linux部署之批量自动安装系统之测试篇
1. 客户端从网络启动如下 2. 复制vesamenu.c32文件可解决上面的问题 3. 客户端再次启动 4. 选择第一个进 ...
- SpringBoot学习笔记(15)----SpringBoot使用Druid
直接访问Druid官网wiki,有详细教程,地址如下: SpringBoot支持Druid地址:https://github.com/alibaba/druid/tree/master/druid-s ...
- Python3基础笔记---序列化
1.json模块 菜鸟教程 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写. import json json.dumps json ...
- Python学习---Day96
转载:http://www.cnblogs.com/wupeiqi/articles/6229292.html Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可 ...
- (2016北京集训十二)【xsy1542】疯狂求导
题解: 这题看起来很难...但是实际上并没有想象中的那么难 第一眼看上去不会求导公式怎么办?不要紧,题目背景非常良心的给出了题目中的导数计算公式 求完导合并同类项很恶心怎么办?不要紧,样例解释说明了不 ...
- 华为P30系列新增“无线投屏”功能
3月26日法国巴黎全球首发之后,4月11日华为又移师上海举办2019春季新品发布盛典,新一代拍照旗舰P30.P30 Pro正式登陆国内. 除了感光徕卡四摄带来的“彩色夜视仪“+“望远镜”的震撼拍照效果 ...