當(dāng)我們通過繼承的方式實(shí)現(xiàn)一個(gè)超類鴨子和不同種類鴨子的時(shí)候温技,這時(shí)候我們對(duì)不同種類的鴨子的行為抽象在超類里,具體實(shí)現(xiàn)在子類中廊移,但是這樣的不好的地方在于糕簿,超類若是增加了一個(gè)行為,會(huì)影響所有的子類狡孔,如果要消除子類中有些種類鴨子具有這樣的不正確的行為懂诗,我們就必須在子類中覆蓋,這樣工作量就比較巨大苗膝,這時(shí)候就要采用策略模式來解除行為和鴨子種類直接的耦合關(guān)系殃恒,都說為了解決繼承帶來的強(qiáng)耦合關(guān)系,我們可以采用包含的方法來解決辱揭,就是將鴨子的行為寫成行為族离唐,抽象成接口和實(shí)現(xiàn)類的模式,用鴨子的抽象類包含行為族的接口,用行為族接口來調(diào)用具體的方法,而實(shí)現(xiàn)類由子類的構(gòu)造函數(shù)中給出具體的實(shí)現(xiàn)類(行為族接口的某個(gè)具體的實(shí)現(xiàn)類即可)糊昙,這樣就解除了不同行為對(duì)鴨子對(duì)象的耦合,這樣的既可以在鴨子子類中構(gòu)造函數(shù)里設(shè)置默認(rèn)的行為该编,還以通過set方法來為鴨子賦予不同的行為,方式更加靈活,可以在不改變子類的情況下實(shí)現(xiàn)子類的不用行為展現(xiàn),更加靈活熟呛。
類似的
? ? ·策略模式把一個(gè)系列的算法封裝到一個(gè)系列的具體策略類里面,作為一個(gè)抽象策略類的子類或策略接口的實(shí)現(xiàn)類尉姨。簡單地說:準(zhǔn)備一組算法惰拱,并將每一個(gè)算法封裝起來,使它們可以互換啊送。