本文小編為大家詳細介紹“web設計模式有哪些”,內容詳細,步驟清晰,細節處理妥當,希望這篇“web設計模式有哪些”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
創建型模式:– 單例模式、工廠模式、抽象工廠模式、建造者模式、原型模式。
結構型模式:– 適配器模式、橋接模式、裝飾模式、組合模式、外觀模式、享元模式、式。
行為型模式:– 模版方法模式、命令模式、迭代器模式、觀察者模式、中介者模式、備式、解釋器模式、狀態模式、策略模式、職責鏈模式、訪問者
其實這些設計模式只是一種思想,大家不需要把代碼全部背下來,而是將設計者的思維融入大家的學習和工作中,更高層次的思考!
單例模式主要分為2種,其他的類型我們不做解釋:餓漢式(線程安全,調用效率高。 但是,不能延時加載。)
懶漢式(線程安全,調用效率不高。 但是,可以延時加載
那么單例有什么作用呢?
核心作用:– 保證一個類只有一個實例,并且提供一個訪問該實例的全局訪問
給大家舉幾個很常見的例子
– Windows的Task Manager(任務管理器)就是很典型的單例模式
– windows的Recycle Bin(回收站)也是典型的單例應用。在整個系統運行過程中,回收站一直維護著僅有的一個
有啥子優點:
– 由于單例模式只生成一個實例,減少了系統性能開銷,當一個對象的產生需要比較多的資源時,如讀取配置、產生其他依賴對象時,則可以通過在應用啟動時直接產生一個單例對象,然后永久駐留內存的方式來解決
– 單例模式可以在系統設置全局的訪問點,優化環共享資源訪問,例如可以設計一個單例類,負責所有數據表的映射
public class SingletonDemo1 {
//類初始化時,立即加載這個對象(沒有延時加載的優勢)。加載類時,天然的是線程安全的!
private static SingletonDemo1 instance = new SingletonDemo1();
private SingletonDemo1(){
}
//方法沒有同步,調用效率高!
public static SingletonDemo1 getInstance(){
return instance;
}
}
餓漢式,顧名思義,一個字-餓,必然是一加載這個類,馬上就new出一個對象(static變量會在類加載的時候初始化)此時也不會涉及多個線程對象訪問該對象的問題。虛擬機保證只會裝載一次該類,肯定不會發生并發訪問的問題。因此,可以省略synchronized關鍵。
但是存在一個問題:就是當我們無論是否使用了這個對象,它都幫我們new出來這個對象,這會導致資源的浪費!
public class SingletonDemo2 {
//類初始化時,不初始化這個對象(延時加載,真正用的時候再創建)。
private static SingletonDemo2 instance;
private SingletonDemo2(){ //私有化構造器
}
//方法同步,調用效率低!
public static synchronized SingletonDemo2 getInstance(){
if(instance==null){
instance = new SingletonDemo2();
}
return instance;
}
}
懶漢式,顧名思義,一個字-懶,也就是當我們需要他的時候,我們就把他new出來,不需要的時候就不會new出它。
但是也會出現一些問題: 資源利用率高了。但是,每次調用getInstance()方法都要同步,并發效率較
讀到這里,這篇“web設計模式有哪些”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。