策略模式定義了一系列演算法,並將每個演算法封裝起來,使他們可以相互替換,且演算法的變化不會影響到使用演算法的客戶。 1、
需要設計乙個介面,為一系列實現類提供統一的方法,多個實現類實現該介面,
2、2.1 設計另乙個介面,專門封裝演算法;
2.2 設計乙個抽象類(可有可無,屬於輔助類),提供輔助函式。參考:
一:**舉例:
1、實現乙個介面可以比較即可;
package stragy.compare;
public inte***ce comparable
2、定義乙個cat類,繼承該介面,即此【cat類】通過年齡old比較大小;
package stragy.compare;
public class cat implements comparable
public string getname()
public void setname(string name)
public int getold()
public void setold(int old)
public int getweight()
public void setweight(int weight)
@override
public boolean compareto(cat cat)
return false;
}}
3、測試**
package stragy.compare;
public class testmain
}
4、將【cat類】中的比較方法單獨抽離出來;
4.1 定義乙個【comparator】介面,如下:
package stragy.compare;
public inte***ce comparator
4.2 定乙個【catcomparator類】實現如下,此實現按照 貓的體重來比較;
package stragy.compare;
public class catcomparator implements comparator
return false;
} }
4.3 那麼cat類改為如下:
package stragy.compare;
public class cat implements comparable
public string getname()
public void setname(string name)
public int getold()
public void setold(int old)
public int getweight()
public void setweight(int weight)
@override
public boolean compareto(cat cat)
// return false;
comparator = new catcomparator();
return comparator.comparator(this, cat);
} }
4.4 測試不變。
策略設計模式(strategy)
策略模式定義了一系列演算法,並將每個演算法封裝起來,使他們可以相互替換,且演算法的變化不會影響到使用演算法的客戶。需要設計乙個介面,為一系列實現類提供統一的方法,多個實現類實現該介面,設計乙個抽象類 可有可無,屬於輔助類 提供輔助函式 統一介面 public inte ce icalculator ...
設計模式 Strategy 策略
意圖 定義一系列的演算法,把他們乙個個封裝起來,並且使他們可以互相替換,使演算法可以獨立於使用它的客戶變化而變化 暫無理解,以後再回來編輯,先貼 taxstrategy.h pragma once class taxstrategy cntax.h pragma once include taxst...
設計模式 策略模式(Strategy)
策略模式 定義了演算法家族,分別封裝起來,讓它們之間可以互相替換,此模式讓演算法的變化不會影響到使用演算法的使用者。封裝變化點是物件導向的一種很重要的思維方式 strategy類,定義所有支援的演算法的公共介面 抽象演算法類 abstract class strategy 演算法方法 public ...