設計模式之策略模式

2021-08-21 04:29:11 字數 1163 閱讀 6265

策略模式:定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以相互轉換,是在介面上面做進一步的處理,體現了面向介面程式設計的思想

假如現在要設計乙個場景,在一片草原上有很多種動物,他們都有吃東西的需求,要怎麼用**來實現這一生態系統。可能大家第一印象想到的就是設計吃東西的介面,然後每種動物分別去實現繼承這種介面

public inte***ce animal
獅子吃肉

public class lion implements animal 

}

可是草原上的動物太多了,很多動物可能吃的食物型別是一樣的,比如貓科動物都吃肉,家畜(牛,羊)等是吃草,還有卵生動物是雜食,啥都吃,那怎麼能實現**的復用,將同一型別的動物只寫一遍實現功能呢?並且如果要給動物新增其他功能,比如說飛行,那animals裡面還能這麼寫嗎?哪些不能飛行的動物怎麼辦呢?這時候就需要用到策略模式了,如前面所說,策略模式本質上就是對介面做進一步的處理,以簡化**,體現更好的封裝

首先是還是要定義吃的介面

public inte***ce eat
接下來我們需要大概區分下所有動物裡面有哪些吃的型別

/* 家禽吃草 */

public class poultry implements eat

}

/* 貓科動物吃肉 */

public class cat implements eat

}

/* 卵生動物雜食:肉和草都吃 */

public class ovipary implements eat

}

接下來就按照不同的動物型別去封裝吃的行為

/* 對草原上的動物進行定義 */

public class animal

public void seteat(eat animal)

}

如果現在要寫牛的吃的行為

/* 牛 */

public class cow extends animal

}

這樣一來即對**進行了封裝,同時又能根據不同情況去靈活的變換,這也是策略模式的精髓所在

設計模式之策略模式

include using namespace std 飛行行為介面類 class flystrategy 高空飛行行為具現類 class heightfly public flystrategy virtual void fly private heightfly 低空飛行行為具現類 class ...

設計模式之 策略模式

策略模式 strategy pattern 定義了演算法家族,分別封裝起來,讓他們之間可以互相替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。策略模式是一種定義了一系列演算法的方法,從概念上來看,所以得這些演算法完成的都是相同的工作,只是實現不同,它可以以相同的方式呼叫所有的演算法,減少了各...

設計模式之策略模式

何為策略,就是可以實現目標的方案集合。而完成一項任務有不同的方式,每一種方式稱為乙個策略。策略模式就是定義一系列演算法,將每乙個演算法封裝起來,並讓他們可以相互替換。很簡單的乙個例子 年底移動公司推出很多的活動,比如說 存話費贈食用油,交話費贈話費,買手機贈話費 等等。推出這些個活動目的就只有乙個,...