`

設計模式之Strategy(策略)

阅读更多

Strategy 是屬於設計模式中 物件行爲型模式 , 主要是定義一系列的演算法 , 把這些演算法一個個封裝成單獨的類別。

Stratrgy 應用比較廣泛 , 比如 , 公司經營業務變化圖 , 可能有兩種實現方式 , 一個是線條曲線 , 一個是框圖 (bar), 這是兩種演算法 , 可以使用 Strategy 實現。

這裏以字串替代爲例 , 有一個文件 , 我們需要讀取後 , 希望替代其中相應的變數 , 然後輸出。關於替代其中變數的方法可能有多種方法 , 這取決於用戶的要求 , 所以我們要準備幾套變數字元替代方案。

首先 , 我們建立一個抽象類別 RepTempRule 定義一些公用變數和方法 :

public abstract class RepTempRule{

protected String oldString="";
public void setOldString(String oldString){
  
this.oldString=oldString;
}

protected String newString="";
public String getNewString(){
   return newString;
}



public abstract void replace() throws Exception;


}

RepTempRule 有一個抽象方法 abstract 需要繼承明確 , 這個 replace 裏其實是替代的具體方法。
我們現在有兩個字元替代方案
,
1.
將文本中 aaa 替代成
bbb;
2.
將文本中 aaa 替代成
ccc;

對應的類別分別是 RepTempRuleOne RepTempRuleTwo

public class RepTempRuleOne extends RepTempRule{


public void replace() throws Exception{

   //replaceFirst jdk1.4 新特性
  
newString=oldString.replaceFirst("aaa", "bbbb")
  
System.out.println("this is replace one");
  
}


}

 

public class RepTempRuleTwo extends RepTempRule{


public void replace() throws Exception{

   newString=oldString.replaceFirst("aaa", "ccc")
   System.out.println("this is replace Two");
  
}


}

至此我們完成了類別圖的設計和程式編制。呼叫如下 :

public class test{

......

   public void testReplace(){

     // 使用第一套方案進行替換。
     RepTempRule rule=new RepTempRuleOne();
     rule.setOldString(record);
     rule.replace();

   }

.....

}

實際整個 Strategy 的核心部分就是抽象類別的使用 , 使用 Strategy 模式可以在用戶需要變化時 , 修改量很少 , 而且快速。

Strategy Factory 有一定的類似 ,Strategy 相對簡單容易理解。

Strategy 適合下列場合 :

1. 以不同的格式保存文件 ;

2. 以不同的演算法壓縮文件 ;

3. 以不同的演算法截獲圖像 ;

4. 以不同的格式輸出同樣資料的圖形 , 比如曲線 或框圖 bar

 

首先 , 我們建立一個抽象類別 RepTempRule 定義一些公用變數和方法 :

public abstract class RepTempRule{

protected String oldString="";
public void setOldString(String oldString){
   this.oldString=oldString;
}

protected String newString="";
public String getNewString(){
   return newString;
}



public abstract void replace() throws Exception;


}

RepTempRule 有一個抽象方法 abstract 需要繼承明確 , 這個 replace 裏其實是替代的具體方法。
我們現在有兩個字元替代方案 ,
1.
將文本中 aaa 替代成 bbb;
2.
將文本中 aaa 替代成 ccc;

對應的類別分別是 RepTempRuleOne RepTempRuleTwo

public class RepTempRuleOne extends RepTempRule{


public void replace() throws Exception{

   //replaceFirst jdk1.4 新特性
   newString=oldString.replaceFirst("aaa", "bbbb")
   System.out.println("this is replace one");
  
}


}

 

public class RepTempRuleTwo extends RepTempRule{


public void replace() throws Exception{

   newString=oldString.replaceFirst("aaa", "ccc")
   System.out.println("this is replace Two");
  
}


}

至此我們完成了類別圖的設計和程式編制。呼叫如下 :

public class test{

......

   public void testReplace(){

     // 使用第一套方案進行替換。
     RepTempRule rule=new RepTempRuleOne();
     rule.setOldString(record);
     rule.replace();

   }

.....

}

實際整個 Strategy 的核心部分就是抽象類別的使用 , 使用 Strategy 模式可以在用戶需要變化時 , 修改量很少 , 而且快速。

Strategy Factory 有一定的類似 ,Strategy 相對簡單容易理解。

Strategy 適合下列場合 :

1. 以不同的格式保存文件 ;

2. 以不同的演算法壓縮文件 ;

3. 以不同的演算法截獲圖像 ;

4. 以不同的格式輸出同樣資料的圖形 , 比如曲線 或框圖 bar

  • 大小: 11.5 KB
分享到:
评论

相关推荐

    走进设计模式之 策略模式(Strategy)

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件设计中,有时我们需要根据不同的场景或条件选择不同的算法或行为。策略模式允许我们将这些算法封装成独立的类,每个类代表一种策略,然后在运行...

    (行为型模式) Strategy 策略模式

    C#面向对象设计模式 (行为型模式) Strategy 策略模式 视频讲座下载

    设计模式C++学习之策略模式(Strategy)

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在C++中,策略模式通常通过定义一系列算法类并让它们之间可以互换来实现。这些算法类都实现了一个公共接口,使得它们可以被相同的客户端代码调用,而...

    设计模式之策略模式(Strategy Pattern)

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需要根据不同的条件或时间点执行不同算法的情况。策略模式提供了一种灵活的方式来处理这种情况,通过将每种算法封装为一个...

    C#面向对象设计模式纵横谈(23):(行为型模式) Strategy 策略模式

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在C#中,策略模式经常被用来解决复杂的问题,特别是在需要动态切换算法或行为的场景下。它通过将算法封装到具有独立接口的类中,使得算法可以互相替换...

    设计模式之策略模式(Strategy Pattern)

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件设计中,我们经常遇到需要在不同时间或根据不同条件使用不同算法的情况。策略模式允许我们将算法封装到独立的可互换的策略类中,从而使它们可以...

    设计模式之策略模式 鸭子问题

    设计模式之策略模式 鸭子问题 策略模式是一种经典的设计模式,通过鸭子问题,可以让学习者更好地了解设计模式的概念和实现。策略模式的主要思想是定义一系列的算法,并将每一个算法封装起来,使它们可以相互替换。...

    [行为模式] head first 设计模式之策略模式(strategy)

    《行为模式:Head First 设计模式中的策略模式》 策略模式是设计模式中的一种行为模式,它使我们能够在运行时改变对象的行为。在面向对象设计中,策略模式提供了一种方式来封装一系列算法,并使它们可以互相替换,...

    设计模式 之 “策略模式[Strategy Pattern]”

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需要根据不同的条件或时间点执行不同算法的情况。策略模式提供了一种将算法族封装到各自独立的类中,并让它们之间可以互相...

    设计模式-策略模式(Strategy)

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。这种模式允许你使用算法族,而无需在代码中硬编码这些算法。通过将算法封装到具有共同接口的独立对象中,策略模式使得你可以根据需要灵活地切换算法,...

    Java 设计模式-策略模式(Strategy)Android讲解

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式是通过定义一系列算法,并将每个算法封装起来,使它们可以相互替换,让算法独立于使用它的客户而变化。这种模式在Android开发中...

    设计模式之策略(Strategy)模式

    这份文档讲诉了设计模式之策略(Strategy)模式,希望可以帮助学习的人!

    JAVA设计模式chm文档

    创建模式: 设计模式之Factory 设计模式之Prototype(原型) 设计模式之Builder 设计模式之Singleton(单态) ...设计模式之Strategy(策略) 设计模式之Mediator(中介者) 设计模式之Interpreter(解释器) 设计模式之Visitor

    Java设计模式 设计模式介绍

    2、爪哇语言抽象工厂创立性模式介绍 3、工厂方法创立性模式介绍 4、单态创立性模式介绍 5、单态创立性模式介绍 6、观察者模式介绍7、责任链模式 8、设计模式之Observer 9、设计模式之Strategy(策略) 10、设计模式之...

    【Java设计模式】(2)策略模式Strategy

    策略模式(Strategy)是软件设计模式中的一种行为模式,它使你能在运行时改变对象的行为。在Java中,策略模式通常涉及定义一系列算法,并将每个算法封装起来,使得它们可以相互替换,同时使得算法的变化独立于使用它...

Global site tag (gtag.js) - Google Analytics