java設計模式(二)單例模式 建造者模式

2021-09-08 22:01:15 字數 2310 閱讀 2538

(三)單例模式

單例模式應該是最常見的設計模式,作用是保證在jvm中,該物件僅僅有乙個例項存在。

長處:1、降低某些建立比較頻繁的或者比較大型的物件的系統開銷。

2、省去了new操作符,減少系統記憶體使用頻率,減輕gc壓力。

3、保證核心**的唯一性,比方交易引擎。

單例模式看似是最簡單的設計模式。

public class singleton 

//建立類的例項的時候載入

private static factory factory = new factory();

//延遲載入

private static factory factory1;

public static factory getinstans()

return factory1;

}}

上面是比較常見的單例模式的寫法,後一種延遲載入應該是實際應用中使用比較多的方式,可是這樣的載入方式假設在多執行緒模式下就有可能出現故障。對於多執行緒的處理,第乙個想到的就是 synchronized 執行緒鎖。

private static factory factory;

private static object classlock = singleton.class;

public static factory getinstances()

return factory;

} }public static factory getinstance()

return factory;

} private static synchronized void syncinit()

}

以上是兩種執行緒鎖的方法,第一種是物件鎖,可是由於每次呼叫都須要加鎖,效能會有部分損失。另外一種是方法鎖。可是實際上,不管 synchronized keyword加在方法上還是物件上,它取得的鎖都是物件,而不是吧一段**或函式當作鎖。

單例模式是為了保證類僅僅有乙個例項,並為類提供全域性訪問點,單例模式最富盛名,可是最easy誤用,不要讓它成為建立全域性變數的花哨方法。類應該僅僅須要知道與它協作的物件,不必了解建立它須要的限制。單例模式一定要記住隱藏建構函式,也就是在類裡面寫乙個 private 的建構函式。

(四)建造者模式

建造者模式的意圖是將類的構建邏輯轉移到類的例項化外部。建造者模式比抽象工廠模式又複雜一點,抽象工廠有乙個 factory 如今多乙個工廠的主管 

director 他來管理工廠的生產過程。

inte***ce builder  

inte***ce product

inte***ce part

class car implements product

public void setdoor(string door)

public string getwindows()

public void setwindows(string windows)

}//詳細建造工具

class concretebuilder implements builder ;

public void buildpartb() ;

public void buildpartc() ;

public product getresult() ;

}//詳細建造工具

class concretebuilder2 implements builder ;

public void buildpartb() ;

public void buildpartc() ;

public product getresult() ;

}//建造者

class director

public void construct()

} public class builderpattern

}

不同的工廠就會生產出不同的產品,可是生產什麼產品是管理者決定的,假如管理者的
construct
不生產門了,那麼終於的產品也就沒有門了。

建造者模式能夠控制中間的生產過程,比方讀取 xml 時候用來推斷某個值是否有資料。或者拼裝 sql 語句的時候

sqlstring sql = new sqlstring();

if(forupdate) else

sql.from(db).where().eq(db);

JAVA設計模式 二 單例模式

單例模式 單例模式是比較常用和容易理解的一種設計模式,目的是乙個單例物件的類只允許存在乙個例項。常用的例如資料庫連線池和多執行緒的執行緒池就是單例模式的。單例模式的幾種實現方式 餓漢模式 created by j on 2018 3 1.public class singleton private ...

Java設計模式 單例模式

單例模式 singleton 顧名思義,就是乙個類只有乙個例項。作為物件的建立模式,單例模式確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。這個類稱為單例類。顯然單例模式的要點有三個 一是某個類只能有乙個例項 二是它必須自行建立這個例項 三是它必須自行向整個系統提供這個例項。從具體...

java設計模式 單例模式

這個模式是很有意思,而且比較簡單,但是我還是要說因為它使用的是如此的廣泛,如此的有人緣,單例就是單 一 獨苗的意思,那什麼是獨乙份呢?你的思維是獨乙份,除此之外還有什麼不能山寨的呢?我們舉個比較難複製的物件 皇帝中國的歷史上很少出現兩個皇帝並存的時期,是有,但不多,那我們就認為皇帝是個單例模式,在這...