設(shè)計模式--Command,TemplateMethod,Strategy

 Command--對象行為型模式

成都創(chuàng)新互聯(lián)公司長期為成百上千客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為清原企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè),清原網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

 
意圖
將一個請求封裝為一個對象,從而使你可用不同的請求對客戶進行參數(shù)化;對請求排隊或記錄請求日志,以及支持可撤銷的操作。
 
別名
Action,Transaction
 
適用性
  1. 抽象出待執(zhí)行的動作以參數(shù)化某對象
  2. 在不同的時刻指定、排列和執(zhí)行請求。
  3. 支持取消操作。
  4. 支持修改日志。
  5. 用構(gòu)建在原語操作上的高層操作構(gòu)造一個系統(tǒng)。
 
結(jié)構(gòu)
 

設(shè)計模式--Command, Template Method, Strategy

 

設(shè)計模式--Command, Template Method, Strategy

 
效果
  1. Command模式將調(diào)用操作的對象和知道如何實現(xiàn)該操作的對象解藕。
  2. Command是頭等的對象。它們可以像其他的對象一樣被操縱和擴展。
  3. 你可將多個命令裝配成一個符合命令
  4. 增加新的Command很容易,因為這無需改變已有的類。
 
實現(xiàn)問題
  1. 一個命令對象應(yīng)達到何種只能程度
  2. 支持取消(undo)和重做(redo)
  3. 避免取消操作過程中的錯誤積累
  4. 使用C++模板

 

Template method----類行為模式

意圖
定義一個操作的算法的骨架,而將一個步驟延遲到子類中。
 
適用性
  1. 一次性實現(xiàn)一個算法的部分,并將可變的行為留給子類來實現(xiàn)。
  2. 各子類中的公共的行為應(yīng)被提取出來并集中到一個公共父類中以避免代碼重復(fù)。
  3. 控制子類擴展。
 
結(jié)構(gòu)
 

設(shè)計模式--Command, Template Method, Strategy

 
效果
模板方法導(dǎo)致一種反向控制,這種結(jié)構(gòu)有時被稱為“好萊塢法則”,即“別找我們,我們找你”。
 
實現(xiàn)
有三個問題值得注意:
  1. 使用C++訪問控制,一個模板方法調(diào)用的原語操作可以被定義為保護成員。
  2. 盡量減少原語操作
  3. 命名約定
 
這種模式我們基本每天都在用,android開發(fā)中Activity的onCreate,onResume, View中的draw等等。
 
Strategy--對象行為型模式
意圖
定義一系列的算法,把它們一個個封裝起來,并且使它們可以相互替換。本模式使得算法可以獨立于使用它的客戶而變化。
 
別名
Policy
 
適用性
  1. 許多相關(guān)的類僅僅是行為有異。“策略”提供了一種用多個行為中的一個行為來配置一個類的方法
  2. 需要使用一個算法的不同變體。
  3. 算法使用客戶不應(yīng)該知道的數(shù)據(jù)??墒褂貌呗阅J揭员苊獗┞稄?fù)雜的、與算法相關(guān)的數(shù)據(jù)結(jié)構(gòu)。
  4. 一個類定義了多種行為,并且這些行為在這個類的操作中以多個條件語句的形勢出現(xiàn)。將相關(guān)的條件分支移入它們各自的Strategy類中以代替這些條件語句
 
結(jié)構(gòu)
 

設(shè)計模式--Command, Template Method, Strategy

 
協(xié)作
  1. Strategy和Context相互作用以實現(xiàn)選定的算法。當(dāng)算法被調(diào)用時,Context可以將算法所需要的所有數(shù)據(jù)都傳遞給該Strategy。或者,Context可以將自身作為一個參數(shù)傳遞給Strategy操作。這就讓Strategy在需要時可以回調(diào)Context。
  2. Context將它的客戶的請求轉(zhuǎn)發(fā)給它的Strategy??蛻敉ǔ?chuàng)建并傳遞一個ConcreteStrategy對象給該Context;這樣,客戶僅與Context交互。通常有一系列的ConcreteStrategy類可供客戶選擇。
 
效果(優(yōu)缺點)
  1. 相關(guān)算法系列
  2. 一個替代繼承的方法
  3. 消除一些條件語句
  4. 實現(xiàn)的選擇
  5. 客戶必須了解不同的Strategy
  6. Strategy和Context之間的通信開銷
  7. 增加了對象數(shù)目
 
實現(xiàn)問題
  1. 定義Strategy和Context接口
  2. 將Strategy作為模板參數(shù)
  3. 使Strategy對象成為可選的

 

本文名稱:設(shè)計模式--Command,TemplateMethod,Strategy
標(biāo)題網(wǎng)址:http://bm7419.com/article18/gegodp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、App設(shè)計網(wǎng)站制作、營銷型網(wǎng)站建設(shè)、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護公司