[javaSE] 單例設計模式,javase例設計模式
四人幫設計了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版:
<?phpclass 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();