? ?1:算法端增加新的算法类,调用算法的修改 还在 算法端,需要改动两处————违反开闭原则
? ?2:客户界面增加选择新的算法的字符串————客户端是必定要修改的
这就是区别二,一个遵循了开闭原则,一个没有。还有一点就是,并不是不遵循开闭原则就一定不好,具体还是要看需求,具体对待。
宏观上问题域不同,细节上,是否需要遵循开闭原则,?这两点足以让我们可以适时的选择清楚简单工厂和策略模式了。?
三、策略 同 简单工厂
两个模式不考虑问题域的话,只看类图,都是通过继承来实现子类的扩张,都能解决动态变化的功能。因此都有一些共性:
?优点:
?1、 简化了单元测试,因为每个算法都有自己的类,可以通过自己的接口单独测试。
2、 避免程序中使用多重条件转移语句,使系统更灵活,并易于扩展。
缺点:
1、 因为每个具体策略类都会产生一个新类,所以会增加系统需要维护的类的数量。
总结:其实23个设计模式,非要交合在一块说,那么我想说:都是相近的,因为他们统一的宗旨是:抽象,继承,多态,封装?,所以,设计模式每个和每个都有想象的地方,或许正因为是这样,才有的设模式的三大类:创建型,结构性,行为型之分,然后,每个小的区域内,又有各个不同的侧重点。
??这是我学习设计模式的一点小感悟:
?学习设计模式:不谋全局者,不足以某一域。
???使用设计模式:知其然,知其所以然。?