Re:Android 设计模式-策略

写项目的时候经常遇到一种,一个问题有多种解决方案的情况。不能老是写if else的流水账哈,这样不符合单一原则。这时候就考虑考虑策略模式了。嘴笨,直接上代码。

想想一个场景,中午我老是不知道吃什么,附近的餐厅早就吃腻了呜呜呜呜。

上接口

//午饭的策略接口
public interface LunchStrategy {

    int pay();//花多少钱哈

}
那我们的plan A,吃板面

public class BanMianStrategy implements LunchStrategy{
    @Override
    public int pay() {
        return 12;//帝都加个蛋和豆皮差不多就这个价吧
    }
}
plan B,吃盒饭

public class HeFanStrategy implements LunchStrategy{
    @Override
    public int pay() {
        return 18;//两荤一素
    }
}
之后午餐
public class Lunch {

    private static final String TAG = Lunch.class.getSimpleName();
    
    private LunchStrategy strategy;



    public void eat() throws NullPointerException {
        if (null == strategy) throw new NullPointerException();

        Log.i(TAG, "吃了顿午饭,一共花了" + strategy.pay() + "元呜呜呜呜");
    }


    public LunchStrategy getStrategy() {
        return strategy;
    }

    public void setStrategy(LunchStrategy strategy) {
        this.strategy = strategy;
    }
}
      那我们开始吃饭吧。

Lunch lunch = new Lunch();
//我基本在食堂只吃板面
BanMianStrategy banMian = new BanMianStrategy();
lunch.setStrategy(banMian);lunch.eat();	
01-10 10:45:06.081 4412-4412/? I/Lunch: 吃了顿午饭,一共花了12元呜呜呜呜
打印结果肯定是12元了哈。

这么做有什么用呢,主要就是可扩展行更强了。楼下餐厅要是新开一个呷哺呷哺怎么办?那就写一个XiapuXiapuStrategy呗哈哈哈哈。

你可能感兴趣的:(Re:Android,Android,设计模式,策略)