设计模式无论任何语言都是通用 的,java的设计模式达23种之多,PHP种也有一些设计模式,下面简单说下工厂模式和单例模式.
首先准备文件结构大概是下面这个样子:
Object.php文件:
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2016/3/10
* Time: 11:57
*/
namespace Factory;
class Object {
private static $instance;
/**
* 单例模式
*/
private function __construct(){
}
public static function getInstance(){
if(self::$instance){
return self::$instance;
}
self::$instance = new self();
return self::$instance;
}
public function say(){
echo __METHOD__;
}
}
ObjectFactory.php文件:
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2016/3/10
* Time: 11:56
*/
namespace Factory;
class ObjectFactory {
/**
* 工厂模式
*/
public static function createObject(){
$obj = Object::getInstance();
return $obj;
}
}
autoload.php文件 :
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2016/3/10
* Time: 12:13
*/
spl_autoload_register('autoload');
function autoload($className){
$classFile = ROOT.'/'.str_replace('\\','/',$className).'.php';
include $classFile;
}
index.php文件:
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2016/3/10
* Time: 11:55
*/
define('ROOT',__DIR__);
require 'autoload.php';
$obj = Factory\ObjectFactory::createObject();
$obj->say();
工厂模式的好处就是我们创建对象的方法是统一的,不是在我们需要的地方直接使用new进行创建,降低了模块之间的耦合度,并且当我们修改了类的名称我们只需要在工厂类里面修改一处即可完成。
单例模式好处是我们使用对象的时候不是每次使用都去new一个新对象出来,这样造成很大的开支和浪费,单例模式保证我们程序运行过程中对象产生一次,节省了开支。
通常模式都是放在一起使用的。