设计模式-策略模式
今天在写java实验时,要求使用策略模式设计一个类的攻击模式,故记录下策略模式的学习
定义:
一个类的行为或其算法在 运行时 可以更改
具体怎么做:
定义一系列算法或策略,并将每个算法封装在独立的类中,使得它们可以互相替换。通过使用策略模式,可以在运行时根据需要选择不同的算法,而不需要修改客户端代码。
什么时候使用?使用场景?
1、如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。
2、一个系统需要动态地在几种算法中选择一种。
3、如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件选择语句来实现。
注意事项:如果一个系统的策略多于四个,就需要考虑使用混合模式,解决策略类膨胀的问题。
优点
1、算法可以自由切换。
2、避免使用多重条件判断。
3、扩展性良好。
缺点
显而易见,客户端必须知道所有的策略类,并自行决定使用哪一个策略类。
另外,策略模式需要生成很多策略类,麻烦!