android自动登录策略,Android设计模式之策略模式

场景描述

小光是一个码农,回老家创业卖热干面,突然有一天小光想到几个活动策略,如下:

即日起, 到感恩节(11/24)那天, 所有饮品6折优惠.

双十二当天, 满12立减2元.

12月20号到圣诞节(12/25), 买热干面+饮料套餐送大苹果.

但是这样随之而来问题是,面对不同的活动,需要不同的计算来收银,这样有点麻烦。小光想我怎样提供几个算法,到时直接来用呢。于是小光想了想,做出了如下行为:

/**

* 策略模式

*/

public interface CeLueModle {

// 定义抽象方法,不同的活动期间,经过不同的算法,得出应收金额

String getActivityPrice();

}

/**

* 感恩节活动

*/

public class ThinksGivingDay implements CeLueModle {

@Override

public String getActivityPrice() {

// 不同的逻辑处理

return "感恩节所有饮品6折";

}

}

/**

* 双十二活动

*/

public class DoubleTwelveDay implements CeLueModle{

@Override

public String getActivityPrice() {

// 逻辑处理

return "双十二当天满12减2元";

}

}

/**

* 平时没有活动

*/

public class DefalutActivity implements CeLueModle {

@Override

public String getActivityPrice() {

// 逻辑处理

return "平时没有活动";

}

}

/**

* 创建收银台的类

*/

public class CheckStand {

private CeLueModle activity;

public CheckStand(){

activity = new DefalutActivity();

}

public CheckStand(CeLueModle activity){

this.activity = activity;

}

public void setActivity(CeLueModle activity){

this.activity = activity;

}

public void printPrice(){

Log.e("TAG",activity.getActivityPrice());

}

}

/**

* 投入使用

*/

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

// 没有活动

CheckStand checkStand = new CheckStand();

checkStand.printPrice();

// 感恩节

checkStand.setActivity(new ThinksGivingDay());

checkStand.printPrice();

// 双十二

checkStand.setActivity(new DoubleTwelveDay());

checkStand.printPrice();

}

}

e8ddc194351c

屏幕快照 2017-08-01 上午10.36.37.png

总结:

策略模式就是在接口中定义一个或多个抽象方法,一般是一个算法方法,子类实现接口并各自封装好各自的算法,我们在用的时候通过一个统一管理类,传入不同的参数,就可以运用不同的算法,使其各不受影响。

其实我觉得策略模式,有点像java中的多态,同一个行为在面向不同的对象时,有不同的表现形式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值