策略模式
它屬于對象行為型模式,主要針對一組算法,將每一個算法封裝到具有共同接口的獨立的類中,從而使得它們可以相互替換。策略模式使得算法可以在不影響到客戶端的情況下發生變化。通常,策略模式適用于當一個應用程序需要實現一種特定的服務或者功能,而且該程序有多種實現方式時使用。
它由以下幾個部份組成:
1.環境對象:該類中實現了對抽象策略中定義的接口或者抽象類的引用。
2.抽象策略對象:它可由接口或抽象類來實現。
3.具體策略對象:它封裝了實現同不功能的不同算法。
各個組成部份之間的關系為:

舉例:
策略接口類:
package strategy;

/**
* <ul>
* <li>Title:[IStrategy]</li>
* <li>Description: [策略接口]</li>
* <li>Copyright 2009 Upengs Co., Ltd.</li>
* <li>All right reserved.</li>
* <li>Created by [Huyvanpull] [2011-7-28]</li>
* <li>Midified by [modifier] [modified time]</li>
* </ul>
* @version 1.0
*/
public interface IStrategy
{
public void oparator();
}

具體策略類A:
package strategy;

public class StrategyA implements IStrategy
{

public void oparator()
{
System.out.println("十而圍之");
}
}

具體策略類B:
package strategy;

public class StrategyB implements IStrategy
{

public void oparator()
{
System.out.println("五而攻之");
}

}

具體策略類C
package strategy;

public class StrategyC implements IStrategy
{
public void oparator()
{
System.out.println("敵而分之");
}

}

上下文環境類:
package strategy;

/**
* <ul>
* <li>Title:[Context]</li>
* <li>Description: [上下文環境]</li>
* <li>Copyright 2009 Upengs Co., Ltd.</li>
* <li>All right reserved.</li>
* <li>Created by [Huyvanpull] [2011-7-28]</li>
* <li>Midified by [modifier] [modified time]</li>
* </ul>
* @version 1.0
*/
public class Context
{
/** 策略 */
private IStrategy strategy;
public Context(IStrategy strategy)
{
this.strategy = strategy;
}
/**
* <ul>
* <li>Description:[作戰]</li>
* <li>Created by [Huyvanpull] [2011-7-28]</li>
* <li>Midified by [modifier] [modified time]</li>
* </ul>
*/
public void fight()
{
this.strategy.oparator();
}
}

測試類:
package strategy;

public class Test
{
public static void main(String[] args)
{
// 我于敵人力量十倍
Context context = new Context(new StrategyA());
context.fight();
// 我于敵人力量五倍
context = new Context(new StrategyB());
context.fight();
// 我于敵人力量一倍
context = new Context(new StrategyC());
context.fight();
}
}

策略模式的優點:
1.提供了一種代替繼承的方法,而且既保持了繼承的優點,又保持了繼承的靈活性.
2.封裝了算法,使系統更加靈活.
策略模式的缺點:
每一個策略增加了一個類,使系統的類會過多.
它屬于對象行為型模式,主要針對一組算法,將每一個算法封裝到具有共同接口的獨立的類中,從而使得它們可以相互替換。策略模式使得算法可以在不影響到客戶端的情況下發生變化。通常,策略模式適用于當一個應用程序需要實現一種特定的服務或者功能,而且該程序有多種實現方式時使用。
它由以下幾個部份組成:
1.環境對象:該類中實現了對抽象策略中定義的接口或者抽象類的引用。
2.抽象策略對象:它可由接口或抽象類來實現。
3.具體策略對象:它封裝了實現同不功能的不同算法。
各個組成部份之間的關系為:

舉例:
策略接口類:


















具體策略類A:











具體策略類B:












具體策略類C











上下文環境類:




































測試類:




















策略模式的優點:
1.提供了一種代替繼承的方法,而且既保持了繼承的優點,又保持了繼承的靈活性.
2.封裝了算法,使系統更加靈活.
策略模式的缺點:
每一個策略增加了一個類,使系統的類會過多.