Strategy模式定义:
定义一系列的算法,把它们一个个封装起来,并且使它们之间可以相互替换。Strategy使算法可以独立于使用它们客户变化而变化。
依照程序员的理解:“在抽象类中定义一种抽象的方法,然后有不同子类去实现这个方法,从而就实现算法分离。当然你也可以定义一个接口,由不同的类去实现这个接口,从而也实现算法分离”
在生活中也有很多例子,比如:”在制造业,制造零件肯定有一套完整的标准,各个生产厂家必须按照这个标准来生产零件,否则生产零件就是废品“
代码示例:
public interface Name{
public String getName();
}
public class rnx implements Name{
public String getName(){
return "rnx";
}
}
public class wangwei implements Name{
public String getName(){
return "wangwei";
}
}
public class Test{
public static void main(String[] args){
//假设在程序中我没有定义Name这个接口
/*
Object obj=getObj();
if(obj instanceof rnx){
rnx r=(rnx)obj;
r.getName();
}else if(obj instanceof wangwei){
wangwei w=(wangwei)obj;
w.getName();
}
*/
//如果在程序中定义了Name接口
Name name=getObj();
name.getName();//这样代码就变得非常清晰了
}
}
Strategy模式在java中运用也比较多,例如Swing中事件监听器等
Bridge模式定义:
将抽象于其实现解耦,使他们可以独立变化。
依照程序员方式来理解:”要想给某个类增加一个新的方法,应该先定义一个接口,在该接口中定义相对应的方法,从而让该类实现这个接口来达到目的,反对使用子类继承父类的方式,这样做的好处就是,避免类的过多。“
这就不给出示例代码了,讲的比较清楚了