~~~
<?php
/**
* 特点:将调用者与创建者分离,调用者直接向工厂请求,减少代码的耦合.提高系统的可维护性与可扩展性.
* 缺点:当要修改类的时候,工厂类也需要做出相对应的更改,违反了开闭原则
* 只知道服务端开放了一个Factory::createDb()方法
* 方法只允许传递数据库名称,如果新增一个oracle需要修改Factory(比较麻烦)
* 面向对象设计法则中,重要的开闭原则--对于修改是封闭的,对于扩展是开放的
*/
interface Db{
function conn();
}
class DbMysql implements Db {
function conn(){
return "mysql conn";
}
}
class DbSqlite implements Db{
function conn(){
return "sqlite conn";
}
}
class PersonFactory{
const MYSQL = "mysql";
const SQLITE = "sqlite";
public static function getInstanc($db){
switch ($db){
case self::MYSQL:
return new DbMysql();
case self::SQLITE:
return new DbSqlite();
default:
return null;
}
}
}
//调用
$mysql = PersonFactory::getInstanc(PersonFactory::MYSQL);
$sqlite = PersonFactory::getInstanc(PersonFactory::SQLITE);
echo $mysql->conn();
echo $sqlite->conn();
~~~
- 简介
- php基础
- 运行环境
- apache
- 安装
- 目录
- httpd.conf
- php
- mysql
- 常量变量
- 变量
- 常见操作
- 变量传值
- 预定义变量
- 作用域
- 常量
- 定义
- 常用操作
- 预定义常量
- 魔术常量
- 区别
- 文件加载
- 四种方式
- php提高
- cookie
- 面向对象
- 类
- 定义
- $this和self
- 属性与方法
- 成员属性和成员方法
- 成员属性
- 成员方法
- 静态属性和静态方法
- 静态属性
- 静态方法
- 类常量
- 构造方法
- 析构方法
- 最终类和最终方法
- 抽象类和抽象方法
- 内存
- 三要素
- 封装
- 继承
- 多态
- 接口
- 类的自动加载
- 对象克隆
- 常用魔术方法
- 设计模式
- 单例模式
- 工厂模式
- 简单工厂模式
- 升级版
- 观察者模式
- 1
- 责任链模式
- 序列化
- mysql
- 连接数据库
- 数据类型
- enum和set
- 框架
- composer
- 安装
- 开发扩展
- 创建项目
- 提到代码到仓库
- packagist
- tp
- 开启php扩展
- tp5.1环境搭建
- 常用扩展
- 验证码
- mongodb
- 中间件
- laravel
- 安装
- 插件
- laravel-ide-helper
- 扩展
- QueryList