策略模式厢塘,顧名思義就是提供一些列的策略可供選擇茶没。
這些策略是平級的可以互相替換的,比如在ppt中有很多的模板晚碾,這些模板就可以稱之為策略抓半,這些模板之間是平級的,用戶可以自己選擇需要的模板(策略)格嘁。
設(shè)想這樣一種情況笛求,一個基類,有很多的子類讥蔽,每個子類都重寫了父類中的某個方法涣易,子類的實現(xiàn)方式不同,其中還存在一些子類實現(xiàn)方式相同冶伞。
如果我們?yōu)槊恳环N子類都實現(xiàn)這個方法新症,那么其中有一些子類的實現(xiàn)方式就是相同的,即造成了重復代碼的情況响禽,但是如果把這個實現(xiàn)寫在父類里徒爹,又會導致所有的子類的實現(xiàn)方式變得相同,顯然不符合實際情況芋类。
這種情況下隆嗅,我們就可以把在子類中實現(xiàn)方式相同的一類行為抽象出來形成一個專門的類(策略),這個類只定義了這一類行為的具體實現(xiàn)方式侯繁。對于不同的實現(xiàn)方式胖喳,就定義不同的實現(xiàn)方式的類(不同的策略)。子類需要哪種實現(xiàn)方式就由子類自己決定贮竟。
也就是說每個子類在面對這個方法的實現(xiàn)方式的時候都有一系列的策略可供選擇丽焊,自己可以選擇相應的實現(xiàn)方式。
而且咕别,在有新的子類加入進來需要一種新的實現(xiàn)方式的時候技健,就可以定義一個新的實現(xiàn)類(策略),有很好的可擴展性惰拱。