四人幫設計了23中設計模式
單例設計模式:解決一個類在內存中只存在一個對象
構造函數私有化
在類中創建一個本類對象
提供一個方法可以獲取該對象
class Single{ private static Single single; public int num=1; private Single(){ } public static Single getInstance(){ if(single==null){ single=new Single(); System.out.println("對象只有一個"); } return single; } } public class SingleDemo { /** * @param args */ public static void main(String[] args) { Single s1=Single.getInstance(); s1.num=2; Single s2=Single.getInstance();//只輸出一次 "對象只有一個" System.out.println(s2.num);//此時輸出2 說明是同一個對象 } }
PHP版:
<?php class Single{ private static $single; public $num=1; private function __construct(){ } public static function getInstance(){ if(Single::$single==null){ Single::$single=new Single(); echo "對象只有一個"; } return Single::$single; } /*覆蓋PHP的魔術方法*/ private function __clone(){ } } class SingleDemo{ public static function main(){ $obj1=Single::getInstance(); $obj1->num=2; $obj2=Single::getInstance();//只輸出一次 "對象只有一個" echo $obj2->num;// 此時輸出2 說明是同一個對象 } } SingleDemo::main();