1. 单例模式
防止多次调用导致new多次(如比较常见的数据库连接),防止服务去当场去世
<?php
/**
* Class Demo
* 4个私有
*/
class Demo
{
//保存实例的成员变量
private static $_instance;
//构造方法(设为私用,不许再次调用)
private function _construct(){
}
//克隆方法(设为私用,不许再次调用)
private function _clone(){
}
//获取实例
static public function getInstance(){
//如果没有自我实例
if(!(self::$_instance instanceof self)){
self::$_instance = new self();
}
return self::$_instance;
}
}
//调用
$demo = Demo::getInstance();
2.工厂模式
工厂模式就像一个工厂的生产方式,只要能生产,不会理会是哪个只员工干活,员工随时可以替换或者更改,意义主要是减少代码之间的耦合度
Personnel.php
/**
* Class Personnel
* 员工
*/
class Personnel
{
//熬夜通宵玩命加班ing...
public function keepWork(){
echo '996';
}
}
Factory.php
/**
* Class Factory
* 某大型养猪厂
*/
class Factory
{
//我有个想法()
static public function BigPlane(){
//某个员工执行(实例化类,返回整个类)
$personnel = new Personnel();
return $personnel;
}
}
Boss.php
//找到工厂实现
$Plane = Factory::BigPlane();
//工厂某员工实现
$Plane->keepWork();
3.注册模式
注册模式定义对象到全局,保存一个静态的数组,方便获取,生存周期是静态参数模式,与全局参数生产周期相同
class register{
//注册树
protected static $obj;
//挂到树上(自挂东南枝)
function set($alias,$object){
self::$obj[$alias] = $object;
}
//获取树上对象
static function get($name){
return self::$obj[$name];
}
//从树上摘除对象
function _unset($alias){
unset(self::$obj[$alias]);
}
}
4.适配器模式
基本上采用接口类定义调用方法,在以需要的多种形式实现。如多种数据库的调用,实际连接数据库的代码不一样,但是使用数据库的步骤一样,而适配器就是把规范调用数据库的形式。适配器模式其实和转接口相似,如usb转接器,把usb转为typc-c或者usb接口。适配器模式和接口类搭配使用,所以比较需要了解接口类的使用。
总结:其实就是把一个重复或者比较复杂的功能拆分,减少耦合,方便将来扩展
//声明接口类,定义子类需拥有以下方法
interface IDatebase
{
//连接数据库
public function conncet($host, $username, $password, $database);
//操作
public function query