四人幫設計了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();