策略模式:定义算法族,并封装起来,可以互相替换,这就是策略模式。
策略模式,使得代码可以尽量多的复用。
把变化的内容提取出来,作为接口,根据需求做出多种实现,这就可以看成一个个的算法族。在超类中声明接口类型的属性,并定义个变化行为的方法,让接口调用实现类的方法代替超类自己去实现。
超类:
package ModelTest;
public abstract class MakeAnimalCry {
Cry cry;
public void makeCry(){
cry.crying();
}
}
接口和两个实现类
package ModelTest;
public interface Cry {
public void crying();
}
package ModelTest;
public class DogCry implements Cry {
@Override
public void crying() {
System.out.println("wang");
}
}
package ModelTest;
public class CatCry implements Cry {
@Override
public void crying() {
System.out.println("miao");
}
}
抽象类的子类
package ModelTest;
public abstract class MakeAnimalCry {
Cry cry;
public void makeCry(){
cry.crying();
}
}
测试类:
package ModelTest;
public class TC {
public static void main(String[] args) {
MakeAnimalCry mac=new TestMakeCry(new CatCry());
mac.makeCry();
}
}