Java 设计模式之策略模式
策略模式作为软件的设计模式,其设计的出发点是在对象中某个行为可能因为不同场景有多种变化或者算法实现的时候运用的一种设计模式,例如界面获取的途径,在有网的情况下从网络获取数据,没网的情况下可以从缓存中获取数据,又比如缴纳税款,每个人收入结构的差异,导致每个人的缴税算法不一致等等。
什么是策略模式
策略模式就是定义了不同的算法族,拥有不同算法的对象可以相互替换,此模式让算法的变化独立于使用算法的客户
使用策略模式的好处
可以让你动态地改变对象的行为。
设计原则
策略模式的设计原则通常是需要将完成某个功能行为从对象抽离出来定义成接口,然后使用抽象类实现该接口并继承该抽象类实现不同算法的对象或实现该接口的任何对象进行相应算法的实现,最后在使用该功能的场景下(对象中)使用相应的算法对象。通常,策略模式是在应用程序需要实现特定的服务或者功能,而且该功能有多种不同的实现的情况下使用。策略模式里面基本有四个对象,一:环境对象:该对象引用了定义某个策略行为的接口或者实现了该接口的抽象类。二:抽象策略对象:它由抽象类或接口定义。三:具体的策略对象:它实现了具体的策略对象的接口。四:使用该环境对象的对象。
举个栗子
这里就举个缴税的栗子吧
首先定义纳税功能的接口:
public interface Nashui{
int jiaoQian();
}
定义计算缴税(使用接口)的类
public class Apply{
public static int getNashuiNum(Nashui na){
System.out.print(na.jiaoQian());
}
}
咱们在定义一个企业家类实现该接口
public class NashuiRich implements Nashui{
public int jiaoQian(){
return 1000;
}
}
再定义一个中产阶级类实现该接口
public class NashuiMin implements Nashui{
public int jiaoQian(){
return 100;
}
}
使用计算需要缴税数额的对象
public class GetPersonNashuiNum{
public static void main(String[] args){
if(企业家){
Apply.getNashuiNum(new NashuiRich() );
}
if(中产阶级){
Apply.getNashuiNum(new NashuiMin());
}
}
}
后续有其他设计模式的讲解。。