1.本质
策略模式用到就是“多态”的思想,父类有多个子类,为同一个行为实现不同的表现形式:
2.案例(生活例子)
举例: 1个中国人,1个印度人,他们都吃饭,但是中国人是用筷子,印度人是用手,这个就是多态,同一行为的2种实现方式
代码:
吃饭行为:
public interface Eating { void havingDinner();}
中国人和印度人:
public class Chinese implements Eating{
@Override
public void havingDinner() {
System.out.println("中国人用筷子吃饭");
}
}
public class Indian implements Eating{
@Override
public void havingDinner() {
System.out.println("印度人吃饭用手");
}
}
策略类和测试函数:
public class Dinner {
private Eating eating;
//定义一个吃饭方式的方法,在这里由于传入不同的实现类,从而实现多态
void havingDinnerStyle(Eating eating){
this.eating = eating;
eating.havingDinner();
}
//开始测试
public static void main(String[] args) {
Eating ChineseEating = new Chinese();
Eating IndianEating = new Indian();
Dinner dinner =new Dinner();
dinner.havingDinnerStyle(ChineseEating);
dinner.havingDinnerStyle(IndianEating);
}
}
输出结果:
中国人用筷子吃饭
印度人吃饭用手
拓展:
在业务复杂的情况下,实现的不一定是接口,可能是一个抽象类,里面除了抽象方法,还有一些属性啊其他方法什么的,但是理念都是一样的。