寫這個模式之前,實在是覺得策略模式和靜態工廠模式很像,無非就是從父類中抽象中公用的方法,然後在實體類中重寫具體的實現。但其實這兩者的區別還是有的,從關注的點來說,靜態工廠關注例項化的物件,而策略模式則更關注方法中不同的實現,先上**吧。
抽象類和實現的實體,與靜態工廠一樣。
抽象類:
abstract class operation
實現類:
public class operationadd extends operation
}
public class operationsub extends operation
}
上下文類:
public class operationcontext }
public void getresult()
}
客戶端**:
public class mainclass
}
其實區別最大的就是客戶端的部分,我們來對比靜態工廠:
public class mainclass
}
對於策略模式,我們只需要了解operationcontext這乙個類,所有和這個類相關的演算法都封裝在這個類裡,這個類可以看做是所有演算法的集合類,而在工廠模式中,除了關注工廠類,還需要關注演算法的父類operation,顯然,從演算法的角度來說,策略模式的耦合度更低。 從零開始學習設計模式 簡單工廠模式
既然要寫關於設計模式的文章,當然是從最簡單的簡單工廠模式,或者說靜態工廠模式說起。一句話概括 簡單工廠模式其實就是根據不同的條件由工廠類去例項化不同的實現類,在使用的時候,並不需要去關心實現類的內部方法具體是怎麼實現的,只需要關心例項化了哪個類。所以簡單來說,簡單工廠模式就是 對共性開放,對個性封閉...
學習設計模式 策略模式
以下絕大部分內容 大話設計模式 c 定義演算法家族,分別封裝起來,讓它們之間可以互相替換,讓演算法變化,不會影響到使用者 good 適合類中的成員以方法為主,演算法經常變動 簡化了單元測試 因為每個演算法都有自己的類,可以通過自己的介面單獨測試。策略模式和簡單工廠基本相同,但簡單工模式只能解決物件建...
設計模式學習 策略模式
看完了策略模式的講解,然後將之於之前的簡單工廠模式對比了一下,策略模式就是將具體的演算法變化封裝了一下,可以將兩者結合一起使用,這樣的話封裝度會更加高一點,而且在更改演算法和新增演算法的時候更加方便。大話設計模式 書中是用商場收銀做例子,我將之用簡單工廠模式做了之後,現在把之前的計算例子再拿出來給一...