【设计模式】策略设计模式

时间:2022-08-13 22:01:03

假设今天老婆让我去丈母娘家做客,可是我答应了我的情人晚上要回去陪她,这可怎么办?,,正在我纠结的时候,好哥们给我一个三个理由包,让我不要看,到时候看情况拆开

接口

三个妙计是同一个类型,继承同一个接口

/** * 声明一个接口 * @author TTF * */
public interface JieKou {
    public void reson();
}

三个理由类

喝酒时候的理由

public class HeJiu implements JieKou {

    @Override
    public void reson() {
        System.out.println("我还要开车呢。。。");
    }

}

打麻将时候的理由

public class MaJiang implements JieKou {

    @Override
    public void reson() {
        System.out.println("我不会玩牌。。。");
    }

}

离开的理由

public class LiKai implements JieKou {

    @Override
    public void reson() {
        System.out.println("公司还有事,就先走了。。。");
    }

}

盛放理由的理由包

public class Context {
    private JieKou jieKou;

    public Context(JieKou jieKou) {
        this.jieKou = jieKou;
    }

    public void liYou() {
        this.jieKou.reson();
    }
}

去丈母娘家

public class JianZhangMuNiang {

    public static void main(String[] args) {
        Context context;
        System.out.println("见了丈母娘吃饭的时候,丈母娘敬酒了....");
        context = new Context(new HeJiu());//拿出有喝酒标签的理由
        context.liYou();

        System.out.println("吃过饭了,丈母娘要打麻将....");
        context = new Context(new MaJiang());//拿出有打麻将标签理由
        context.liYou();

        System.out.println("麻将不打,气氛不好了,那就找机会离开吧....");
        context = new Context(new LiKai());//要走了,拿出走标签的理由
        context.liYou();
    }
}

输出:

见了丈母娘吃饭的时候,丈母娘敬酒了....
我还要开车呢。。。
吃过饭了,丈母娘要打麻将....
我不会玩牌。。。
麻将不打,气氛不好了,那就找机会离开吧....
公司还有事,就先走了。。。