php工场形式和单例形式区分
单例形式:防备反复实例化,防止大批的new操纵,削减斲丧体系和内存的资本,使得有且唯一一个实例对象
header("Content-type: text/html; charset=utf-8"); //定义字符编码,防备乱码 /** * 单利类 */ class Single { private static $_instance; //保留实例的对象 private function __construct() //定义组织要领 { } private function __clone() //定义一个空要领防备被外部克隆 { } public static function getInstance() //定义一个猎取实例对象的要领 { if (!(self::$_instance instanceof Single)) { self::$_instance = new self(); } return self::$_instance; //返回实例对象 } /** * 测试要领 */ public function test() { echo "单利形式"; } } $run=Single::getInstance(); $run->test();
工场形式:用工场要领替代new操纵的一种形式,假如须要变动所实例化的类名,只需在工场要领内修正,不需一一寻觅代码中细致实例化的处所
header("content-type:text/html;charset=utf-8"); //定义字符编码,防备乱码 /** * 测试类一 */ class demo1 { //定义一个test1要领 public function test1() { echo '这是demo1类的test1要领'.PHP_EOL; } } /** * 测试类二 */ class demo2 { //定义一个test2要领 public function test2() { echo '这是demo2类的test2要领'.PHP_EOL; } } /** * 工场类 */ class Factoty { // 根据传参类名,建立对应的对象 static function createObject($className) { return new $className(); } } /** * 经由过程传类名,挪用工场类内里的建立对象要领 */ $demo = Factoty::createObject('demo1'); $demo->test1(); //输出这是demo1类的test1要领 $demo = Factoty::createObject('demo2'); $demo->test2(); //输出这是demo2类的test2要领
更多PHP学问,请接见ki4网!
以上就是php工场形式和单例形式区分的细致内容,更多请关注ki4网别的相干文章!