PHP设计模式

16次阅读

共计 445 个字符,预计需要花费 2 分钟才能阅读完成。

简单工厂模式
// 共同接口
interface db{
function conn();
}

// 服务器端开发(不知道将会被谁调用)
class dbsqlite implements db{
public function conn(){
echo ‘ 连接上了 sqlite’;
}
}

class dbmysql implements db{
public function conn(){
echo ‘ 连接上了 mysql’;
}
}

class Factory{
public static function creatDB($type){
if($type == ‘mysql’){
return new dbmysql();
}elseif($type == ‘sqlite’){
return new dbsqlite();
}else{
throw new Exception(“Error DB type”, 1);
}
}
}
// 客户端调用时,不知道工厂类中实例化的几种类,只需要传递 $type 参数就可以
$db = Factory::creatDB(‘mysql’);
$db->conn();

正文完
 0

php设计模式

16次阅读

共计 1050 个字符,预计需要花费 3 分钟才能阅读完成。

总体来说设计模式分为三大类:

创建型模式 — 共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式 — 共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式 — 共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式

下面,简单介绍几种设计模式:
单例模式

单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例。
优点:一、实例控制:单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。二、灵活性:因为类控制了实例化过程,所以类可以灵活更改实例化过程。

缺点 一、开销 虽然数量很少,但如果每次对象请求引用时都要检查是否存在类的实例,将仍然需要一些开销。可以通过使用静态初始化解决此问题。二、可能的开发混淆 使用单例对象(尤其在类库中定义的对象)时,开发人员必须记住自己不能使用 new 关键字实例化对象。因为可能无法访问库源代码,因此应用程序开发人员可能会意外发现自己无法直接实例化此类。
<?php
// 单例
class Log
{
// 创建静态私有的变量保存该类对象
static private $instance;
// 参数
private $config;

// 防止直接创建对象
private function __construct($config){
$this->config = $config;
echo “ 我已经被实例化了 -“;
}

// 防止克隆对象
private function __clone(){}

public static function getInstance($config){
// 判断 $instance 是否是 Log 的对象
// 没有则创建则创建
if (!self::$instance instanceof self) {
self::$instance = new self($config);
}
return self::$instance;
}

public function getName(){
echo $this->config;
}
}

$db1 = Log::getInstance(‘ 实例化 1 ’);
$db1->getName();
echo “<br>”;
$db2 = Log::getInstance(‘ 实例化 2 ’);
$db2->getName();

?>

运行结果:
我已经被实例化了 - 实例化 1
实例化 2

正文完
 0