您好,登錄后才能下訂單哦!
實現了訪問者和被訪問者分離,靈活且擴展性強;但違背了迪米特和依賴倒轉原則,被訪問元素若修改影響較大。
雙分派技術(雙動態綁定)
訪問者的角色由它的實現對象確定
被訪問的角色也由它的具體對象決定
源碼:注解的解釋器
員工給不同管理者查看的報表
病人、抓藥人、醫生、定價者面對藥店不同藥物所做的想法或操作
加入中介類來改變對象關系,使網狀結構變為星型結構,多對多變為一對多。應用于對象關系較為復雜的情況。
源碼: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
簡單計算
發送請求給一個對象鏈條,該鏈條每個對象和它的下一對象綁定,實現發起者與最終接手者的解耦
源碼:事件分發
廣播的有序機制改進為責任鏈廣播
公司各種權限的逐級申請
繼承制度
裝飾模式用作功能擴展,可以給相同對象不斷增加新的特征;代理模式則偏向行為控制,在方法執行前后做處理。
策略模式封裝可變更的算法解耦;狀態模式通過改變狀態控制行為。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。