策略设计模式可达到解耦的目的.
能够根据所传递的参数对象的不同而具有不同行为可称为策略设计模式
一个采用策略设计模式的方法,方法中包含所要执行的算法中固定不变的部分,而"策略"包含变化的部分.策略就是传递进去的参数对象.
接口
public interface People {
void say();
void eat();
}
两个实现类
public class XiaoMing implements People {
public void say(){
System.out.println("I'm XiaoMing");
}
public void eat(){
System.out.println("XiaoMing eating food");
}
}
public class XiaoHong implements People {
public void say(){
System.out.println("I'm XiaoHong");
}
public void eat(){
System.out.println("XiaoHong eating food");
}
}
测试方法
public class Test {
public static void doSomething(People people){
people.say();
people.eat();
}
public static void main(String[] args){
doSomething(new XiaoMing);
doSomething(new XiaoHong);
}
}
输出结果
I'm XiaoMing
XiaoMing eating food
I'm XiaoHong
XiaoHong eating food
一个方法接收一个对象A,若想传入一个对象B,则需要到方法中改变方法接收参数的类型,或者创建一个新的方法来接收这个参数.这样做耦合度太高了,需要经常改写好的代码.
如果我们在方法中用一个接口对象来接收参数,需要传入的对象都实现该接口.想改变这个参数的时候,不需要改变原来写好的代码,创建一个新的对象传入就行.这样耦合度低.也是我们要达到的目的.