策略模式,顧名思義就是提供一些列的策略可供選擇。
這些策略是平級的可以互相替換的,比如在ppt中有很多的模板,這些模板就可以稱之為策略,這些模板之間是平級的,用戶可以自己選擇需要的模板(策略)。
設想這樣一種情況,一個基類,有很多的子類,每個子類都重寫了父類中的某個方法,子類的實現方式不同,其中還存在一些子類實現方式相同。
如果我們為每一種子類都實現這個方法,那么其中有一些子類的實現方式就是相同的,即造成了重復代碼的情況,但是如果把這個實現寫在父類里,又會導致所有的子類的實現方式變得相同,顯然不符合實際情況。
這種情況下,我們就可以把在子類中實現方式相同的一類行為抽象出來形成一個專門的類(策略),這個類只定義了這一類行為的具體實現方式。對于不同的實現方式,就定義不同的實現方式的類(不同的策略)。子類需要哪種實現方式就由子類自己決定。
也就是說每個子類在面對這個方法的實現方式的時候都有一系列的策略可供選擇,自己可以選擇相應的實現方式。
而且,在有新的子類加入進來需要一種新的實現方式的時候,就可以定義一個新的實現類(策略),有很好的可擴展性。