-
常用的設計模式有哪些,作用是什么
設計模式一共23種,常用的設計模式有:- 工廠模式: 構建多個對象的工廠。
- 單例模式:單例類負責創建自己的對象,同時確保只有單個對象被創建
- 代理模式:代理其他類,增強原來類的功能。
- 外觀模式:包裝多個類的復雜性,對外提供統一的方法。
- 責任鏈模式:為了避免請求發送者與多個請求處理者耦合在一起,將所有請求的處理者通過前一對象記住其下一個對象的引用而連成一條鏈;當有請求發生時,可將請求沿着這條鏈傳遞,直到有對象處理它為止。
-
單例模式的懶漢和餓漢模式你了解嗎
懶漢模式:太懶了,第一次用的時候才去實例化,適合使用量較小的情況。
public class Singleton {
private Singleton() {
}
private static Singleton singleton = null;
public static Singleton getInstance() {
if (singleton == null) {
singleton = new Singleton();
}
return singleton;
}
}
餓漢模式:很勤快,類定義的時候就實例化了。線程安全的,適合訪問量比較大的情況。
public class Singleton {
private Singleton(){ }
private static final Singleton singleton = new Singleton();
public static Singleton getInstance(){
return singleton;
}
}
-
Spring框架用到了哪些設計模式
- 靜態工廠方法: Spring中的BeanFactory就是簡單工廠模式的體現,根據傳入一個唯一的標識來獲得Bean對象,但是否是在傳入參數后創建還是傳入參數前創建這個要根據具體情況來定。
- 單例模式:Spring提供了全局的訪問點BeanFactory。但沒有從構造器級別去控制單例,這是因為Spring管理的是是任意的Java對象。
- 代理模式:Spring AOP的實現原理就是動態代理和字節碼操控。
- 適配器模式:將一個類的接口轉換成客戶希望的另外一個接口。Adapter模式使得原本由於接口不兼容而不能一起工作的那些類可以一起工作。Spring中在對於AOP的處理中有Adapter模式的例子。
- 模板方法:定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。Template Method使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟,比如JdbcTemplate
-
你怎么選擇合適的設計模式
考慮設計模式怎么解決問題,找出與使用者問題相關的模式,研究模式如何相互關聯,考慮設計中那些是可變的,盡可能實現強內聚,松耦合。
參考(摘抄的文字版權屬於原作者):
https://blog.csdn.net/zl1zl2zl3/article/details/83689539
http://c.biancheng.net/design_pattern/
https://www.cnblogs.com/huahai/p/7270913.html
