1. 程式人生 > >模板方法模式和策略模式的相似點和差異性

模板方法模式和策略模式的相似點和差異性

Template 模式採用繼承的方式實現演算法的異構,其關鍵點就是講通過演算法封裝在抽象基類中,並將不同的演算法實現細節放在子類中實現。Template模式符合面向物件系統分析和設計中的一個原則,依賴倒置原則,父類呼叫子類的操作,底層模組實現高層模組宣告的介面。這樣控制權在父類,底層模組反而要依賴高層模組。繼承的強制性約束關係也讓 Template 模式有不足的地方,我們可以看到對於ConcreteClass 類中的實現的原語方法 Primitive1(),是不能被別的類複用。Template 模式暴露的問題也正是繼承所固有的問題。

策略模式通過組合方式實現演算法的異構,Template模式則採取的是繼承的方式。

要實現一個抽象介面,繼承是一種方式:我們將抽象介面宣告在基類中,將具體的實現放在具體子類中。組合(委託)是另外一種方式:我們將介面的實現放在被組合物件中,將抽象介面放在組合類中。這兩種方式各有優缺點。