目的:实现某一功能有多种算法或策略,可根据环境或者条件的的不同,选择不同的算法来完成该功能。避免将多种算法硬编码,比如通过提供过个方法的入口,或者在方法中通过if...esle,case来做判断,在这些种方式下,如果需要增加一种算法或策略,就需要去修改封装算法的源代码,违背开闭原则。
问题:如果让算法和对象分开,让算法可以独立于它的客户而变化?
策略模式讲运算规则和对象区分开来,功能非常强大,因为这个设计模式的设计思想就是面向对象编程的多形性思想。
目的:实现某一功能有多种算法或策略,可根据环境或者条件的的不同,选择不同的算法来完成该功能。避免将多种算法硬编码,比如通过提供过个方法的入口,或者在方法中通过if...esle,case来做判断,在这些种方式下,如果需要增加一种算法或策略,就需要去修改封装算法的源代码,违背开闭原则。
问题:如果让算法和对象分开,让算法可以独立于它的客户而变化?
策略模式讲运算规则和对象区分开来,功能非常强大,因为这个设计模式的设计思想就是面向对象编程的多形性思想。