Template Method模式和Strategy模式有何異同
Strategy則是在使用策略模式的應用例項內部維護一個策略例項,針對不同的子類用不同的策略實現.
來看看兩者的程式碼實現:
Template Method模式 -- 基類
Java程式碼
- package com.dzeay.pattern.template_method;
- public class BaseTemplate {
- public void doSameThing() {
- System.out.println("BaseTemplate.doSameThing");
- }
-
public void doOtherThing() {
- System.out.println("BaseTemplate.BaseTemplate");
- }
- }
Template Method模式 -- 子類A
Java程式碼
- package com.dzeay.pattern.template_method;
- public class AClass extends BaseTemplate {
- @Override
- public void doOtherThing() {
-
System.out.println("AClassImpl.doOtherThing"
- }
- }
Template Method模式 -- 子類B
Java程式碼
- package com.dzeay.pattern.template_method;
- public class BClass extends BaseTemplate {
- @Override
- public void doOtherThing() {
- System.out.println("BClassImpl.doOtherThing");
- }
- }
Template Method模式 -- 測試類
Java程式碼
- package com.dzeay.pattern.template_method;
- /**
- * <pre>
- * Template Method(模板方法模式)詳解:
- * 由基類提供一個模板,將各子類中不變的行為提取到基類中實現,
- * 而各子類中可變的行為由各子類自己重寫基類方法實現
- * </pre>
- *
- * @author <a href="mailto:[email protected]">dzeay.com</a>
- * @since 2010-11-15
- * @version 1.0
- */
- public class TestClass {
- /**
- *
- * @param args
- */
- public static void main(String[] args) {
- BaseTemplate aClass = new AClass();
- aClass.doSameThing();
- aClass.doOtherThing();
- BaseTemplate bClass = new BClass();
- bClass.doSameThing();
- bClass.doOtherThing();
- }
- }
Strategy模式 -- 策略介面
Java程式碼
- package com.dzeay.pattern.strategy;
- public interface IStrategy {
- public void doOtherThing();
- }
Strategy模式 -- 策略A
Java程式碼
- package com.dzeay.pattern.strategy;
- public class AStrategy implements IStrategy {
- @Override
- public void doOtherThing() {
- System.out.println("AStrategy.doOtherThing");
- }
- }
Strategy模式 -- 策略B
Java程式碼
- package com.dzeay.pattern.strategy;
- public class BStrategy implements IStrategy {
- @Override
- public void doOtherThing() {
- System.out.println("BStrategy.doOtherThing");
- }
- }
Strategy模式 -- 應用
Java程式碼
- package com.dzeay.pattern.strategy;
- public class Context {
- private IStrategy strategy;
- public Context() {
- }
- public Context(IStrategy strategy) {
- this.strategy = strategy;
- }
- public void doOtherThing() {
- this.strategy.doOtherThing();
- }
- public void setStrategy(IStrategy strategy) {
- this.strategy = strategy;
- }
- }
Strategy模式 -- 測試類
Java程式碼
- package com.dzeay.pattern.strategy;
- /**
- * <pre>
- * Strategy(策略模式)詳解:
- * 在使用策略模式的應用例項內部維護一個strategy例項,針對不同的子類用不同的策略實現
- * </pre>
- *
- * @author <a href="mailto:[email protected]">dzeay.com</a>
- * @since 2010-11-15
- * @version 1.0
- */
- public class TestClass {
- /**
- * @param args
- */
- public static void main(String[] args) {
- Context context = new Context();
- context.setStrategy(new AStrategy());
- context.doOtherThing();
- context.setStrategy(new BStrategy());
- context.doOtherThing();
- context.setStrategy(new IStrategy() {
- @Override
- public void doOtherThing() {
- System.out.println("doOtherThing");
- }
- });
- context.doOtherThing();
- }
- }
未完待續 ........
相關推薦
Template Method模式和Strategy模式有何異同
Template Method模式很容易理解,就是由基類提供一個模板,將各子類中不變的行為提取到基類中實現,而各子類中可變的行為則由各子類自己重寫基類方法實現. Strategy則是在使用策略模式的應用例項內部維護一個策略例項,針對不同的子類用不同的策略實現. 來看看兩者的程式碼實現: Templat
Template Method模式和Strategy模式:繼承與委託
Themeplate Method public abstract class Application { protected abstract void init(); protected abstract void idle(); protected abstra
java異常處理 Exception、error、執行時異常和一般異常有何異同
一、開場白 對於程式執行過程中的可能出現異常情況,java語言使用一種稱為異常處理的錯誤捕捉機制進行處理。相信大家對 try { }catch( ){} finally{} 這種結構非常熟悉,使用頻率極高。既然經常使用它,而且也是面試常問知識點,我們就有必要去
Template Method模式與Strategy模式的理解
/** * Strategu模式,把公用方法抽象成介面 * @author paul * @date 2006-8-9 */publicabstractclass Beverage { /** * 業務邏輯的實現,final確保不被子類 改變 * prepareRecipe void
Template Method - 模板方法模式
本文介紹設計模式中的模板方法(Template Method)模式的概念,用法,以及實際應用中怎麼樣使用Template Method模式進行開發。Template Method模式的概念 Template Method模式正如其名,在作為抽象類的父類裡,定義了一個具有固定演算法並可以細分為多個步驟的模板方法
設計模式之 Template Method - 模板方法模式
本文介紹設計模式中的模板方法(Template Method)模式的概念,用法,以及實際應用中怎麼樣使用Template Method模式進行開發。Template Method模式的概念 Template Method模式正如其名,在作為抽象類的父類裡,定義了一個具有固定演算法並可以細分為多個步驟的模板方法
java常用的的設計模式和開發模式都有哪些
設計模式是不分語言的;前輩們總結出來的設計模式分:3種類型及23種模式:設計模式主要分三個型別:建立型、結構型和行為型。 其中建立型有: 一、Singleton,單例模式:保證一個類只有一個例項,並提供一個訪問它的全域性訪問點 二、Abstract Factory,抽象工廠
設計模式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
java常用的設計模式和開發模式有哪些
一、設計模式的分類 設計模式是不分語言的;前輩們總結出來的設計模式分:3種類型及23種模式:設計模式主要分三個型別:建立型、結構型和行為型。 其中建立型有:一、Singleton,單例模式:保證一個類只有一個例項,並提供一個訪問它的全域性訪問點二、Abstract Fact
設計模式--Template模式 VS Strategy模式
Template 模式和Strategy模式所要解決的問題類似,而且通常可以互換使用。 Template模式使用繼承來解決問題。 Strategy模式使用委託來解決問題。 如圖1:template 模式:基類 BubbleSorter實現了通用演算法sort, IntBu
代理模式 和 策略模式 看似相似,有什麼不同
代理模式在使用的時候,使用的物件我們並不關係被代理者。 策略模式在使用的時候,我們使用的時候其實我們是知道指定的執行者。 如下 (注意傳參) 代理模式 Assist assist = new A
交給子類: Template Method(模板方法模式)【PHP】
pri align 子類 特定 itl area 圖結構 -a abs Template Method(模板方法模式) ---- 將具體處理交給子類 Template Method 就是定義一個操作中的算法骨架,而將一些步驟延遲到子類中,使得子類可以不改變一個算法
設計模式之策略模式和狀態模式(strategy pattern & state pattern)
本文來講解一下兩個結構比較相似的行為設計模式:策略模式和狀態模式。兩者單獨的理解和學習都是比較直觀簡單的,但是實際使用的時候卻並不好實踐,算是易學難用的設計模式吧。這也是把兩者放在一起介紹的原因,經過對比和例項介紹,相信應該會一些比較深刻的感知。最後在結合個人的體會簡單聊一下對這兩個模式的一些看法。 1.
[CentOS 7系列]忘記密碼的“救星”——單用戶模式和救援模式
linux 操作系統 用戶 system 忘記密碼 init是Linux系統操作中不可缺少的程序之一。 是一個由內核啟動的用戶級進程。 內核啟動(已經被載入內存,開始運行,並已初始化所有的設備驅動程序和數據結構等)之後,就通過啟動一個用戶級程序init的方式來啟動其他用戶級的進程或服務。所
使用Xcode-debug模式和release模式
哪裏 eas containe cin white ces item proc mman 在開發過程中,我們常常須要用到NSLog輸出一些信息,甚至有的開發過程。必須在控制臺查看輸出,有經驗的程序猿通過控制臺輸出就能知道整個數據交互的一個流程。可是一個
su 和 su - 命令有何不同
本質 tro shel 最大的 錯誤 path環境變量 命令 su - pwd su命令和su -命令最大的本質區別就是:前者只是切換了root身份,但Shell環境仍然是普通用戶的Shell;而後者連用戶和Shell環境一起切換成root身份了。只有切換了Shell環境才
activeMQ隊列模式和主題模式的Java實現
ons javax try nfa port 實現 catch n) tac 一、隊列模式 生產者 import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Dest
單例模式和工廠模式
必須 order pac border 聲明 並且 span lin 實例對象 PHP------單例模式和工廠模式
【轉】FTP主動模式和被動模式的比較
edit 兩個 int cti 了解 選擇 監聽端口 通訊 mod 總是記不住FTP主動和被動模式的區別。放在這裏,以備日後查閱。 FTP是僅基於TCP的服務,不支持UDP。與眾不同的是FTP使用2個端口,一個數據端口和一個命令端口(也可叫做控制端口)。通常來說這兩個端
實模式和保護模式區別及尋址方式
解釋 src 需求 範圍 上線 二進制表示 工作 菜鳥 相對 轉載自:http://blog.csdn.net/rosetta 64KB-4GB-64TB? 我記得大學的匯編課程、組成原理課裏老師講過實模式和保護模式的區別,在很多書本上也有談及,無奈本人理解和感悟能