1. 程式人生 > >Template Method模式與Strategy模式的理解

Template Method模式與Strategy模式的理解

/**
 * Strategu模式,把公用方法抽象成介面
 * 
@author paul
 * @date 2006-8-9
 
*/publicabstractclass Beverage {
    
/**
     * 業務邏輯的實現,final確保不被子類 改變
     * prepareRecipe void
     * 2006-8-9 16:00:57
     
*/finalvoid prepareRecipe() {
        boilWater();
        brew();
        pourInCup();
        addCondiments();
    }
    
private ActionInDrinking action;
    
publicvoid brew() {
        action.brew();
        
    }
    
publicvoid addCondiments(){
        
this.action.addCondiments();
    }
    
//protected abstract void brew();
    
//abstract void addCondiments();void boilWater() {
        System.out.println(
"Boiling water");
    }
  
    
void pourInCup() {
        System.out.println(
"Pouring into cup");
    }

    
public ActionInDrinking getAction() {
        
return action;
    }

    
publicvoid setAction(ActionInDrinking action) {
        
this.action = action;
    }
}
/////////////////////////////////////////////////////////////publicinterface ActionInDrinking {
  
publicvoid brew();
  
publicvoid addCondiments();

}
publicclass TeaDrink implements ActionInDrinking {

    
public TeaDrink() {
        
super();
        
// TODO Auto-generated constructor stub    }

    
publicvoid brew() {
        
// TODO Auto-generated method stub
        
// steeping tea    }

    
publicvoid addCondiments() {
        
// TODO Auto-generated method stub        
    }

}

相關推薦

Template Method模式Strategy模式理解

/** * Strategu模式,把公用方法抽象成介面 * @author paul * @date 2006-8-9 */publicabstractclass Beverage {    /**     * 業務邏輯的實現,final確保不被子類 改變     * prepareRecipe void  

Template Method模式Strategy模式:繼承委託

Themeplate Method public abstract class Application { protected abstract void init(); protected abstract void idle(); protected abstra

Template Method模式Strategy模式有何異同

Template Method模式很容易理解,就是由基類提供一個模板,將各子類中不變的行為提取到基類中實現,而各子類中可變的行為則由各子類自己重寫基類方法實現.  Strategy則是在使用策略模式的應用例項內部維護一個策略例項,針對不同的子類用不同的策略實現.  來看看兩者的程式碼實現:  Templat

Template Method - 模板方法模式

本文介紹設計模式中的模板方法(Template Method)模式的概念,用法,以及實際應用中怎麼樣使用Template Method模式進行開發。Template Method模式的概念 Template Method模式正如其名,在作為抽象類的父類裡,定義了一個具有固定演算法並可以細分為多個步驟的模板方法

設計模式Template Method - 模板方法模式

本文介紹設計模式中的模板方法(Template Method)模式的概念,用法,以及實際應用中怎麼樣使用Template Method模式進行開發。Template Method模式的概念 Template Method模式正如其名,在作為抽象類的父類裡,定義了一個具有固定演算法並可以細分為多個步驟的模板方法

設計模式19:Template Method Pattern (模板方法模式)

Define:Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses redefine c

關於FTP主動模式被動模式的一點理解

又一次面試的時候,面試像這樣問我:請簡述FTP的主動模式與被動模式的區別?FTP這玩意不是天天都要用到的麼,看起來這麼簡單的問題我居然回答不上來,好尷尬!經過幾天的思考與理解,終於有點眉目,拙見讓諸位見笑了。 主動模式中FTP的客戶端傳送 PORT 命令到FTP伺服器。被動

設計模式--Template模式 VS Strategy模式

Template 模式和Strategy模式所要解決的問題類似,而且通常可以互換使用。 Template模式使用繼承來解決問題。 Strategy模式使用委託來解決問題。 如圖1:template 模式:基類 BubbleSorter實現了通用演算法sort, IntBu

交給子類: Template Method(模板方法模式)【PHP】

pri align 子類 特定 itl area 圖結構 -a abs Template Method(模板方法模式) ---- 將具體處理交給子類 Template Method 就是定義一個操作中的算法骨架,而將一些步驟延遲到子類中,使得子類可以不改變一個算法

AMD模式CMD模式

提前 角度 處理方式 沒有 全局 div 模塊 多個 amd AMD模式與CMD模式區別 1. 對於依賴的模塊,AMD 是提前執行,CMD 是延遲執行。不過 RequireJS 從 2.0 開始,也改成可以延遲執行(根據寫法不同,處理方式不同)。CMD 推崇 as l

[CentOS 7系列]VIM編輯模式命令模式

用戶 mtime 一、編輯模式按鍵作用i在當前字符前插入I在光標所在行的行首插入a在當前字符後插入A在光標所在行的行尾插入o在當前行的下一行插入新的一行O在當前的上一行插入新的一行二、命令模式命令作用/word向光標之後查找一個字符word,按n向後繼續搜索?word向光標之前查找一個字符word,按

Linux 修改root密碼 單用戶模式救援模式

linux 密碼修改 單用戶模式 救援模式單用戶模式重啟Linux進入GRUB界面在系統啟動界面,例如 選擇第一項,並按e鍵,進入edit界面,找到linux16開頭的行,將光標移至ro處,將ro修改為rw init=/sysroot/bin/sh 按Ctrl+X鍵啟動啟動後進入如下所示界面,先

瀏覽器標準模式怪異模式-CSS1Compat and BackCompat

方法 set code frameset http ctype nal cnblogs 16px      由於歷史的原因,各個瀏覽器在對頁面的渲染上存在差異,甚至同一瀏覽器在不同版本中,對頁面的渲染也不同。在W3C標準出臺以前,瀏覽器在對頁面的渲染上沒有統一規範,產生了差

Outlook 2013連接到Office 365時緩存模式聯機模式下的流量問題

office 365 outlook 2013 exchange 緩存模式 最近在遷移Office 365時,碰到一個流量居高不下,帶寬不夠用的問題,環境如下:Office 365 E5訂閱國際版,用戶端使用Outlook2013連接O365郵箱,600用戶,50M Office365專用帶寬,當

混雜模式標準模式總結

mod 默認 內容 也會 XML 使用 聲明 doc 參考 1 區分模式的意義? IE5.5引入了文檔模式的概念,通過使用DOCTYPE實現模式切換,它的主要作用是告訴瀏覽器以哪種模式呈現,如何解析文檔,也就是說兩種模式主要影響CSS內容的呈現,某些情況下也會影響JavaS

模式保護模式

虛擬存儲器 有效 偏移 進程 代碼 訪問權限 描述符 兼容 ont 1. 實模式,又叫實地址模式,CPU完全按照8086的實際尋址方法訪問從00000h--FFFFFh(1MB大小)的地址範圍的內存,在這種模式下,CPU只能做單任務運行;尋址公式為:物理地址=左移4位的段

zabbix主動模式被動模式、添加監控主機、添加自定義模板

Linux學習筆記zabbix主動模式與被動模式 添加監控主機 添加自定義模板 1.將原來的模板下載下來,刪除自己不需要的,導入時要更改名字。 2.創建一個鏈接的模板,取消鏈接後,在刪除模板中不想要的選項。 處理圖形中的亂碼 zabbix主動模式與被動模式、添加監控主機、添加自定義模板

【轉】策略模式命令模式區別

區別 相同 策略模式 菜單 nbsp 之間 mman 變化 排隊 策略模式 把易於變化的行為分別封裝起來,讓它們之間可以互相替換, 讓這些行為的變化獨立於擁有這些行為的客戶。GoF《設計模式》中說道:定義一系列算法,把它們一個個封裝起來,並且使它們可以相互替換。該模式使得算

孿生兄弟狀態模式策略模式有什麽區別,究竟該如何選擇

一段 如何解決 影片 工作 設置 飛機 等等 gety 兩種 都說狀態模式和策略模式很像,它們的 UML 類圖一樣。這也說明,單純從代碼角度來講,它們的本質一樣,其實都是多態的應用。但它們實際所代表的的事物特征是有本質區別的,選擇哪個設計模式,代表了你看待業務場景的角度。從

標準模式混雜模式

DOCTYPE 的一個重要作用就是告訴瀏覽器,它該以何種模式呈現。 我們通過document.compatMode這個屬性來檢測,當前頁面處於何種模式: CSS1Compat:標準模式 BackCompat:混雜模式   那麼,問題來了,什麼情況下頁面會處於混雜模式呢?