Netty框架中的設計模式

1、facade模式(外觀模式)

JDK的SocketChannel和ServerSocketChannel沒有統一的Channel接口供業務開發者使用,對於用戶而言,沒有統一的操作視圖,使用起來不方便。而Netty重新定義了Channel接口,採用facade模式進行封裝,將網絡io操作,網絡io相關聯的其他操作封裝起來,統一對外提供。

參考:https://www.cnblogs.com/lwbqqyumidi/p/3754251.html

2、觀察者模式

ChannelFuture中有個重要的addListener方法,會添加特定的監聽器到future中,這些監聽器會在future isDone返回true的時候立刻被通知。

3、Reactor模式(反應器模式)

用於解決多用戶訪問併發問題。傳統線程池模式:來一個客人(請求)去一個服務員(線程),當客人點菜時,服務員什麼都不幹,處於阻塞狀態。Reactor模式:當客人點菜的時候,服務員去招呼其他客人,客人點好菜後,直接把服務員招呼過來。

反應器模式與觀察者模式在某方面極爲相似:當一個主體發生改變時,所有附屬體都能得到通知。不同之處在於,觀察者模式與單個事件關聯,反應器模式與多個事件關聯。

Netty線程模型中用到了Reactor模式,NioEventLoop中有selector。

4、責任鏈模式

Netty的ChannelPipeline和ChannelHandler機制類似於Servlet和Filter過濾器,這類攔截器實際上是責任鏈模式的一種變形。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章