那有没有一种方法可以实现多条件判断,但又不会降落代码的质量呢?答案是有的,那便是我们本日要讲的策略模式。
什么是策略模式严格来讲策略模式不是一种方法,而是一种编码思想。策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们可以相互更换,让算法独立于利用它的客户而独立变革。
利用场景策略模式的利用场景常用的有以下几种:
针对同一类型问题的多种处理办法,仅仅是详细行为有差别时。须要安全地封装多种同一类型的操作时。同一抽象类有多个子类,而又须要利用 if-else 或者 switch-case 来选择详细子类时。详细实现
由于其独特的优点,策略模式被很多开拓者采取,包括Java、Python、PHP等。比如,PHP中的PDO,Java AWT 中的 LayoutManager。不过,虽然开拓措辞不同,但实现逻辑操作基本同等。那下面就以PHP为例,作大略解释。
首先我们创建一个Love接口,如下:
然后,根据Love接口创建不同性情的人,如下:
第三步,创建拥有不同性情属性的GirlFriend类,如下:
到此时,我们就完成了策略模式的准备事情了。
接下来,我们看看如何实行。
由于,sajiao这个行为是跟性情有关系的,因此,我们须要先创建一个性情实例,如下:
然后,将这个实例,传入grilfriend这个实例中,并实行sajiao这个行为,如下:
这样,一个大略的策略模式的PHP方案便是实现完成了。看看代码,是不是觉得很简洁呀。往后碰着类似场景,你也可以这么做,再也不要一上来便是if…else或者switch…case了。
末了说一句,如果你们有其他措辞(如Java、Python等)的实现方案,你们可以在文章后留言,到时候我们可以一起学习学习。