分析:你给我什么模式我就按什么模式来实现功能
用途:解决代码中的if-else
上代码:
类图
计数抽象类:
/**
* 功能描述:动物的抽象类
*
* @author Songxianyang
* @date 2022-01-20 13:53
*/
public abstract class Count {
/**
* 抽象方法
* @param i
* @param j
* @return
*/
abstract Integer num(int i, int j);
}
策略加:
/**
* 功能描述:策略: 加
*
* @author Songxianyang
* @date 2022-01-20 13:56
*/
public class Add extends Count{
@Override
Integer num(int i, int j) {
return i+j;
}
}
策略减:
/**
* 功能描述:策略:减
*
* @author Songxianyang
* @date 2022-01-20 13:57
*/
public class Reduce extends Count{
@Override
Integer num(int i, int j) {
return i-j;
}
}
乘除 等等
策略工厂:
/**
* 功能描述: 数工厂
*
* @author Songxianyang
* @date 2022-01-20 13:58
*/
public class CountFactory {
private Count count;
public CountFactory(Count count) {
this.count = count;
}
public Integer getNum(int i, int j) {
return count.num(i, j);
}
}
测试类:
/**
* 功能描述:你给我什么策略我就按你的策略走
*
* @author Songxianyang
* @date 2022-01-20 14:04
*/
public class Test {
public static void main(String[] args) {
CountFactory add = new CountFactory(new Add());
System.out.println("9+1="+add.getNum(9, 1));
CountFactory reduce = new CountFactory(new Reduce());
System.out.println("10-9="+reduce.getNum(10, 9));
}
}
测试图:
源码地址:源码地址