A.當(dāng)一個對象必須通知其它對象,而它又不能假定其它對象是誰。換言之,你不希望這些對象是緊密耦合的
B.許多相關(guān)的類僅僅是行為有異。“策略”提供了一種用多個行為中的一個行為來配置一個類的方法
C.需要使用一個算法的不同變體。例如,你可能會定義一些反映不同的空間/時間權(quán)衡的算法。當(dāng)這些變體實現(xiàn)為一個算法的類層次時可以使用策略模式
D.算法使用客戶不應(yīng)該知道的數(shù)據(jù)??墒褂貌呗阅J揭员苊獗┞稄?fù)雜的、與算法相關(guān)的數(shù)據(jù)結(jié)構(gòu)