設計模式三 strategy策略模式

2021-07-28 12:37:25 字數 1740 閱讀 5069

策略模式定義了一系列演算法,並將每個演算法封裝起來,使他們可以相互替換,且演算法的變化不會影響到使用演算法的客戶。 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 ...