日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

GoF、J2EE 设计模式

發(fā)布時間:2023/12/10 asp.net 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GoF、J2EE 设计模式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • `GoF`
  • 1、單例模式(Singleton)
  • 2、觀察者模式
  • 3、工廠模式(Factory)
  • 4、抽象工廠模式
  • 5、代理模式
    • 5.1 動態(tài)代理
    • 5.2 靜態(tài)代理
  • 6、原型模式
  • `J2EE`
  • 1、MVC模式

思維導(dǎo)圖(詳見博文資源)

學(xué)習(xí)資源

https://www.runoob.com/design-pattern/proxy-pattern.html
https://refactoringguru.cn/design-patterns/factory-method

GoF

1、單例模式(Singleton)

重要思想:構(gòu)造器私有 (別人無法new這個對象)保證只有單個對象被創(chuàng)建

1、餓漢式:不管三七二十一,上來先把對象加載出來

多線程安全

缺點::類加載時就初始化,浪費內(nèi)存(拿數(shù)組來說,有的數(shù)組new出來后以后可能并沒用到)

public class Hungry {private Hungry() {}private static final Hungry HUNGRY = new Hungry();public static Hungry getInstance() {return HUNGRY;} }

2、懶漢式:

①線程不安全

public class LazyMan {private LazyMan() {}private static LazyMan lazyMan;public static LazyMan getInstance() {if (lazyMan == null) {lazyMan = new LazyMan();}return lazyMan;} }

②線程安全: DCL(double-checked locking)懶漢式

volatile:原子性操作 -> 避免指令重排

靜態(tài)內(nèi)部類

多線程安全

public class Holder {private Holder() {}public static Holder getInstance() {return InnerClass.HOLDER;}public static class InnerClass {private static final Holder HOLDER = new Holder();} }

單例不安全:反射可破壞單例

2、觀察者模式

適合應(yīng)用場景:

  • 當一個對象狀態(tài)的改變需要改變其他對象, 或?qū)嶋H對象是事先未知的或動態(tài)變化的時, 可使用觀察者模式。
  • 當你使用圖形用戶界面類時通常會遇到一個問題。 比如, 你創(chuàng)建了自定義按鈕類并允許客戶端在按鈕中注入自定義代碼, 這樣當用戶按下按鈕時就會觸發(fā)這些代碼。
  • 當應(yīng)用中的一些對象必須觀察其他對象時, 可使用該模式。 但僅能在有限時間內(nèi)或特定情況下使用。
  • 訂閱列表是動態(tài)的, 因此訂閱者可隨時加入或離開該列表。

3、工廠模式(Factory)

簡單工廠模式 :對于增加新的產(chǎn)品,需要擴展已有代碼

優(yōu)點:方便調(diào)用者使用對象
缺點:沒有滿足開閉原則 -> 雖然某種程度不符合設(shè)計原則,但實際使用最多

工廠方法模式:不修改已有類的前提下,通過增加新的工廠類實現(xiàn)擴展

二者對比

4、抽象工廠模式

  • 圍繞一個超級工廠創(chuàng)建其他工廠,該工廠又稱為其他工廠的工廠
  • 在抽象工廠模式中,接口是負責(zé)創(chuàng)建一個相關(guān)對象的工廠,不需要顯式指定它們的類。每個生成的工廠都能按照工廠模式提供對象。
  • 不可以增加產(chǎn)品,可以增加產(chǎn)品族

UML類圖

舉例


5、代理模式

應(yīng)用實例:Spring AOP

5.1 動態(tài)代理

5.2 靜態(tài)代理

6、原型模式


J2EE

1、MVC模式

總結(jié)

以上是生活随笔為你收集整理的GoF、J2EE 设计模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。