設計模式

設計模式面試

概述
軟件設計模式(Design pattern),又稱設計模式,是一套被反覆使用、多數人知曉的、通過分類編目的、
代碼設計經驗的總結。使用設計模式是爲了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性、程序的重用性。 單例模式 --Singleton,保證一個類僅有一個實例,並提供一個訪問它的全局訪問點 --好處是:爲了節省內存,爲了節省時間 --餓漢式/懶漢式(面試題) --開發步驟: -私有化構造方法,不讓外界隨便new --本身在類的內部 ,建立一個對象 --提供公共的訪問方法,並返回本身建立的對象


//測試 單例設計模式
public class C1{
public static void main(String[] args) {
Hello h = Hello.get();
Hello h1 = Hello.get();

System.out.println(h == h1);//true

Hello2 hello2 = Hello2.get();
Hello2 hello3 = Hello2.get();
System.out.println(hello2 == hello3);//true
}
}
//TODO 懶漢式--面試的重點!!!--延遲加載--線程安全
class Hello2{
private Hello2(){}
//TODO 建立對象的時機晚了!!! --按需加載--延遲加載
static private Hello2 h;
//TODO 共享資源h是靜態的,並且被多條語句操做,確定不安全.須要加鎖.
// 並且鎖對象分配的必須是類名.class才安全
//TODO 鎖方法,普通方法的鎖對象默認是this.靜態方法的鎖對象默認就是類名.class
synchronized static public Hello2 get(){
//TODO 鎖代碼塊:想鎖靜態的共享資源,,鎖對象必須也是類名.class
// synchronized (Hello2.class){
if(h == null){
h = new Hello2();//沒new過,才new
}
return h;
}
}


//餓漢式 -- 方便使用
class Hello{
//1,私有化構造方法
private Hello(){ }
//加static是由於要被靜態的get()調用--靜態只能調靜態
static private Hello hello = new Hello();
//3,提供一個方法,把hello返回
static public Hello get(){
return hello;//把本身建立好的hello對象返回調用位置 }}
相關文章
相關標籤/搜索