(三)單例模式
單例模式應該是最常見的設計模式,作用是保證在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設計模式 單例模式
這個模式是很有意思,而且比較簡單,但是我還是要說因為它使用的是如此的廣泛,如此的有人緣,單例就是單 一 獨苗的意思,那什麼是獨乙份呢?你的思維是獨乙份,除此之外還有什麼不能山寨的呢?我們舉個比較難複製的物件 皇帝中國的歷史上很少出現兩個皇帝並存的時期,是有,但不多,那我們就認為皇帝是個單例模式,在這...