中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

設計模式一句話與實戰應用總結

發布時間:2020-07-17 02:01:41 來源:網絡 閱讀:497 作者:星恒Android 欄目:移動開發
訪問者模式
一句話

實現了訪問者和被訪問者分離,靈活且擴展性強;但違背了迪米特和依賴倒轉原則,被訪問元素若修改影響較大。

細節

雙分派技術(雙動態綁定)
訪問者的角色由它的實現對象確定
被訪問的角色也由它的具體對象決定

應用場景

源碼:注解的解釋器
員工給不同管理者查看的報表
病人、抓藥人、醫生、定價者面對藥店不同藥物所做的想法或操作

中介者模式
一句話

加入中介類來改變對象關系,使網狀結構變為星型結構,多對多變為一對多。應用于對象關系較為復雜的情況。

應用場景

源碼:binder driver和service manager;keyGuardViewMediator;
主板和電源、cpu等關系
總經理和諸多部門
Activity中view、model、邏輯交互

外觀模式
一句話

和中介者類似,加入中間類形成統一編程接口,區別在于不是為了改變對象關系,而是把多個功能封裝為api以供調用。

應用場景

源碼:Context
插件化動態加載(ActivityProxy)
sdk封裝
框架封裝(OKHttp,Piccaso)

組合模式
一句話

通過多層繼承和實現相同方法組合模型,用于控制樹形結構。但通常需要進行類型判斷,增加代碼復雜度。

細節

安全的組合模式:由子組合完成抽象方法(ViewGroup),外界使用需要判斷view或viewGroup,使用不方便。
透明組合模式:根節點、枝干節點、葉節點都有相同的抽象方法,對外界透明,使用方便不安全。

應用場景

源碼:ViewGroup View
文件夾和文件

適配器模式
一句話

通過適配接口進行兼容處理,通常后期使用,避免過度適配;靈活使用可以增加擴展和復用性(系統adapter)。

細節

對象適配器:適配目標為接口,適配器中傳入被適配對象,通過適配目標接口進行轉換處理。
類適配器:適配目標為抽象父類,通過擴展子類實現相同方法實現方法兼容。

應用場景

源碼:adapter
電源轉換

裝飾者模式
一句話

利用裝飾者類重復傳入裝飾對象,可以隨意增減裝飾方法。替代繼承方式解決類膨脹問題,擴展性極強。

應用場景

源碼:ContextWrapper
餐館混搭
奶茶混搭

狀態模式
一句話

抽象狀態對象使得行為在不同狀態下都能產生變化。

應用場景

源碼:wifi管理
登錄狀態
家電控制狀態
下載狀態管理

模板模式
一句話

定義算法框架,使子類不改變結構的情況下改變行為。

應用場景

源碼:AsynTask、Activity生命周期
adapter-holder
draw流程
Activity Init三板斧

備忘錄模式
一句話

在該對象之外保存該對象的內部狀態

應用場景

源碼:saveInstanceState,事務回滾
游戲保存讀取
記事本狀態恢復

享元模式
一句話

使用共享對象(對象池)實現對象的復用,需要分離內部狀態和外部狀態,可以大大節約內存。

應用場景

源碼:handleMessage消息池復用;線程池
建立tcp消息池
車票系統車次信息池

命令模式
一句話

封裝命令對象傳遞請求給調用者,分離請求者和接收者,會增加大量的類,但是職責分明,高內聚,非常靈活容易擴展,可作為回調的替代。

應用場景

源碼:Packagemanager的安裝、移動、測量命令(內部類HandlerParams子類實現);
畫筆應用
記事本應用

解釋模式
一句話

使用不同解釋器對特定語言進行解析,對簡單語法適應較好,易于擴展,無法對應復雜文法(如有順序的四則運算)。

應用場景

源碼:清單文件解析parseActivity
簡單計算

責任鏈模式
一句話

發送請求給一個對象鏈條,該鏈條每個對象和它的下一對象綁定,實現發起者與最終接手者的解耦

應用場景

源碼:事件分發
廣播的有序機制改進為責任鏈廣播
公司各種權限的逐級申請
繼承制度

設計模式異同對比

裝飾者VS代理模式

裝飾模式用作功能擴展,可以給相同對象不斷增加新的特征;代理模式則偏向行為控制,在方法執行前后做處理。

狀態模式vs策略模式

策略模式封裝可變更的算法解耦;狀態模式通過改變狀態控制行為。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

庆安县| 吐鲁番市| 馆陶县| 洛阳市| 久治县| 怀化市| 张家界市| 玉龙| 儋州市| 册亨县| 商都县| 准格尔旗| 赣榆县| 莱芜市| 翼城县| 桂阳县| 盖州市| 连州市| 马边| 延庆县| 阿尔山市| 孙吴县| 朔州市| 顺平县| 维西| 清远市| 安阳市| 呼伦贝尔市| 丽水市| 法库县| 体育| 通江县| 大悟县| 桐乡市| 昔阳县| 南和县| 石渠县| 岱山县| 井研县| 龙江县| 长沙县|