策略模式、内部类

策略模式、上下文与内部类的思考

纵饮孤独 提交于 2020-04-18 04:52:03
策略模式简介 策略模式一直程序开发中,最常用的模式之一;它的功能就是定义了一系列的算法,这些算法定义着公共的接口,所以它们之间可以相互替换。这使得我们在开发过程中,若有新的策略需要扩展时,程序变的很容易开发。下面是策略模式的结构示意图: 从结构示意图中,我们能清楚的感受到,策略模式的巧妙之处就是将变化的东西(这里我们称之为算法)通过定义一个相同的公共的接口封装且隔离;以不同的策略实现相同的接口,使程序能够完成各种任务的同时,让上层的编程针对接口,实现不变,也不关心其调用的是哪种策略。 上下文的引入 然而在实际开发中,我们的需求往往不会像结构示意图那样,如此简单、如此 simple 。实际较为常见的情况就是: 上层的调用需要与接口之间有一定的交互。 交互的可能是一些属性,或是一些方法。这样的交互往往会让接口变的难以调用;于是上下文的引入就是势在必行。将相关的属性或一些公共的方法封装到上下文中,让上下文去和接口进行复杂的交互。而上层的调用只需要跟上下文打交道就可以。下面有包含上下文的策略模式结构示意图: 仔细看看两个结构示意图的变化,其实不外乎将变的东西和不变的东西进行封装与隔离,这样不变的东西能够尽可能的减小其变化,而变的东西更容易修改或扩充;其实这也正是软件设计的基本原则。 透过示意图,我们上下文对象,将自己传递给接口,方便接口调取它的属性与方法,以完成交互