策略模式的一個(gè)真正優(yōu)勢(shì)是由于環(huán)境對(duì)象和策略對(duì)象的代碼位于兩個(gè)不同的類中,因此它們之間有一道墻將數(shù)據(jù)劃分開(kāi).而壞消息是我們需要找一個(gè)方法使策略所需要的環(huán)境中具備的數(shù)據(jù)穿過(guò)這道墻.實(shí)際上,我們?cè)诖擞袃蓚€(gè)選擇.
第一種方法是,可以繼續(xù)使用我們一直用的方法,當(dāng)環(huán)境對(duì)象調(diào)用策略對(duì)象的方法時(shí),將策略對(duì)象需要的甩有東西以參數(shù)的形式傳入,回想在我們的Report救命中,報(bào)告對(duì)象將格式化對(duì)象所需要的所有東西通過(guò)參數(shù)傳入output_report方法,這種方法有一個(gè)好處,是使策略對(duì)象和環(huán)境對(duì)象相互間區(qū)分得很清楚,策略對(duì)象具備接口,而環(huán)境對(duì)象只是簡(jiǎn)單地調(diào)用接口,這個(gè)方法的弱點(diǎn)是可能會(huì)有大量數(shù)據(jù)需要在環(huán)境對(duì)象和策略對(duì)象之間傳遞,因此,當(dāng)你傳遞大量的數(shù)據(jù)時(shí),你無(wú)法保證這些數(shù)據(jù)會(huì)被使用到.