1.策略模式
策略模式体现了两个非常基本点面向对象设计原则:
(1)封装变化的概念
(2)使用接口编程,而不是对接口的实现
策略模式定义:
(1)定义一组算法,将每个算法封装起来,并且使他们之间可以互换
(2)策略模式使这些算法在客户端调用它们的时候能够互不影响地变化
策略模式的组成:
(1)抽象策略角色:策略类,通常由一个接口或抽象类实现(Comparator接口)
(2)具体策略角色:包装相关算法和行为(Comparator接口的实现类)
(3)环境角色:持有一个策略类的引用,最终给客户端调用(TreeSet或TreeMap)
2.策略模式编码步骤
(1)对策略对象定义一个公共接口
(2)编写策略类,该类实现了上面的公共接口(多个策略类)
(3)在使用策略对象的类中保存一个对策略对象的引用
(4)在使用策略对象的类中,实现对策略对象的set和get方法或者使用构造方法完成赋值
3.编程完成加减乘除的计算过程
(1)新建Strategy接口,定义抽象策略类
(2)新建加法策略类,实现抽象策略类的接口
新建减法、乘法、除法策略类,实现抽象策略类的接口
(3)新建环境角色类
(4)新建客户端类
4.快捷键Ctrl + T——找出接口的所有实现类
5.策略模式优缺点
(1)客户端必须知道所有策略类,并自行决定使用哪个策略类
(2)造成很多策略类,维护代价高