人物:张三,丈母娘
故事:张三这天去找老丈母娘摊牌,早就料到老丈母娘死活不同意,直接准会好三个策略应对,最后一个为中级策略!!!
要点:各策略要继承同一接口,需要一个额外类承载接口以便转换形态
1.策略接口
package org.senssic.startegy;
public interface Startegy {
public void justDo();
}
2.三种策略实现类
package org.senssic.startegy;
public class DoGetCar implements Startegy {
@Override
public void justDo() {
// TODO Auto-generated method stub
System.out.println("拿出一个闪闪发光的小汽车");
}
}
package org.senssic.startegy;
public class DoGetHourse implements Startegy {
@Override
public void justDo() {
// TODO Auto-generated method stub
System.out.println("拿出一个大房子");
}
}
package org.senssic.startegy;
public class DoXXOO implements Startegy {
@Override
public void justDo() {
System.out.println("生米已经煮成熟饭,我已经和你女儿xxoo啦 小外孙都有啦,哈哈哈");
}
}
3.把策略全部都放在身后,等会好直接拿出来对应
package org.senssic.startegy;
public class JuseDo {
private Startegy startegy;
public JuseDo(Startegy startegy) {
this.startegy = startegy;
}
public void justDo() {
this.startegy.justDo();
}
}
4.老丈母娘发难啦
package org.senssic.startegy;
public class ZhangSan {
public static void main(String[] args) {
System.out.println("张三到丈母娘家里去说:'我要娶你女儿!!!" + "--->丈母娘说没车你凭啥娶'");
// 张三直接从背后拿出来一个玩具车说”搁这里“
JuseDo juseDo = new JuseDo(new DoGetCar());
juseDo.justDo();
System.out.println("丈母娘说没车你没房子'");
// 张三拿出一个画好的房子
juseDo = new JuseDo(new DoGetHourse());
juseDo.justDo();
System.out.println("丈母娘说没车你太丑,癞蛤蟆别吃天鹅肉啦'");
// 张三狂笑不已
juseDo = new JuseDo(new DoXXOO());
juseDo.justDo();
}
}
终于还是赢取了白富美,想想心里还有些小激动呢