STRATEGY 模式

Strategy 模式實現與Template Method 模式類似的功能,實現通用算法與具體實現的分離。不同點在於,它使用另外一種方式解除了通用算法與具體實現的依賴性。

再來看BubbleSorter 基類。
將抽象方法提取出來,定義到一個SortHandler 接口中,在BubbleSorter 基類中調用接口的方法。

接口:
public interface SortHandler
{
   protected abstract void swap(int index);
   protexted abstract boolean outOfOrder(int index);
}

BubbleSorter類:
public class BubbleSorter
{

  private SortGHandler handler = null;

  public BubbleSorter(SortGHandler handler ){
     this.handler  = handler ;
  }

  public void doSort()
  {
     for(...)
        for(...)
        {
            if( handler.outOfOrder(index) )
                  handler.swap(index);
         }
   }
}

實現SortHandler 接口:
public IntSortHandler implements SortHandler
{
  ...
}

IntSortHandler 類與上例中的IntBubbleSorter 類不同,它對BubbleSorter 類一無所知,不依賴於冒泡排序的任何實現方式。這是與Template Method 模式不同的。
缺點:需要更多的開銷,增加了額外的複雜性。

發佈了29 篇原創文章 · 獲贊 3 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章