CodeGym/Java Course/Module 3 a ɛto so abien/生成模式,第 2 部分

生成模式,第 2 部分

開放

4.1 建造者

Builder是一種生成式設計模式,它提供了一種創建複合對象的方法。

將復雜對象的構造與其表示分開,以便相同的構造過程可以產生不同的表示。

建設者

優勢:

  • 允許您更改產品的內部表示;
  • 隔離實現構建和展示的代碼;
  • 更好地控制設計過程。

弱點:

  • 創建複雜對象的算法不應取決於對象的組成部分以及它們如何組合在一起;
  • 構造過程必須提供被構造對象的不同表示。

一個很好的例子是 HttpRequest 類,它有一個子類 HttpRequest.Builder 可以用來創建 HttpRequest 類的實例並確保它們是有效的。

4.2 惰性初始化

惰性初始化是一種編程技術,在使用其結果之前立即執行某些資源密集型操作(對象創建、值計算)。

因此,初始化是“按需”執行的,而不是提前執行的。類似的想法在各種領域都有應用:例如,即時編譯和準時制物流概念。

延遲初始化

惰性初始化的一個特例——在訪問它時創建一個對象——是生成設計模式之一。它通常與 Factory Method、Loner 和 Proxy 等模式結合使用。

優勢:

  • 只有在真正需要的時候才進行初始化;
  • 應用程序的初始初始化加速:可以推遲的一切都被推遲。

弱點:

  • 無法顯式設置對象的初始化順序;
  • 第一次訪問對象時會有延遲,這在並行執行另一個資源密集型操作時可能很關鍵。正因為如此,有必要仔細考慮在多線程軟件系統中使用惰性初始化的適當性。

還記得在編寫 web.xml 時如何指定 servlet 的啟動順序嗎?這正是延遲加載的結果。Tomcat 將在第一次訪問時創建 servlet 對象。

4.3 對像池

對像池是父設計模式,一組已初始化且隨時可用的對象。當系統需要一個對象時,不是創建它,而是從池中取出。當不再需要一個對象時,它不會被銷毀而是返回到池中。

對像池

當在作業開始時創建對象並在結束時銷毀它是昂貴的時,對像池用於提高性能。當頻繁創建和銷毀對象,但同時存在的對像數量很少時,性能提升尤其明顯。

當對象擁有內存以外的資源(例如網絡套接字)時,對像池很有用。或者,如果對象集合佔用了計算機內存的很大一部分,並且會產生大量“垃圾”。

您還記得,Tomcat 在單獨的線程中執行每個請求。但是線程並不是每次都重新創建,而是存儲在線程池中。這允許更快地執行請求:當需要一個線程時,它只是從池中取出。順便提一下,問題是:如何將正在運行的線程放入池中並從池中取出?

1
任務
Module 3 a ɛto so abien,  等級 16課堂 3
上鎖
All moves are recorded
task4110
1
任務
Module 3 a ɛto so abien,  等級 16課堂 3
上鎖
Lazy Proxy
task4111
1
任務
Module 3 a ɛto so abien,  等級 16課堂 3
上鎖
Rolling the Ball
task4112
留言
  • 受歡迎
你必須登入才能留言
此頁面尚無留言