将一系列具有同样名称(不同方式的)行为,封装成一个个的策略定义算法家族,分别封装起来,让它们之间可以互相替换,让算法的变化,不影响到使用算法的客户优点:简化单元测试,每个算法都有自己的类,通过自己的接口单独测试任何需求的变更都是需要成本的