《設計模式之禪》讀書筆記-策略模式、享元模式、工廠模式、門面模式混用

前一篇講的什麼是策略模式,策略模式的優缺點,在實際應用中肯定不能這麼簡單的應用,需要結合其他模式混用。比如結合門面模式解決所有策略類都需要對外暴露的缺點,使用享元模式解決多次創建實例的缺點等。

此篇是根據工作總結而來,業務需求改進與升級需要我們提供一個推送的消息系統,經過選型確定使用Netty與WebSocket做技術支撐。Netty的API簡單統一,直接繼承它的SimpleChannelUpstreamHandler(4.0以下)或SimpleChannelInboundHandler(4.0以上)通過重寫messageReceived方法即能獲取信息流,而我們所有的業務邏輯都要在這個方法裏面做處理。現有的需求是客戶能登錄、登出、修改各種狀態,在準備的時候能夠推送各種消息(卡片消息、等簡短的消息),很明顯,這個要用策略模式來做,登錄、登出、狀態切換、消息推送等是我們的具體策略類,需要用到策略枚舉,來對應消息選擇用哪個策略類來處理,簡單的類圖如下:

ss

但是實際上這樣做毫無藝術感。

經過優化之後的類圖如下:

任務中心策略模式

增加了兩個類,SubscribeServiceFactory以及EventService,我們在初始化的時候直接用spring實例化各個策略的xxxHandler(享元模式),EventService提供了倆方法,subscribe與publish,SubscribeServiceFactory通過調用subscribe訂閱xxxHandler的策略處理類(即在EventService保存對應的引用實際上這是一個key-value對,key是策略枚舉的值,value是對應的策略類),publish是對策略枚舉的一些封裝使用,使其找到對應的策略類(門面模式)。

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