里氏替换原则
里氏替换原则
/**
* 里氏替换原则(LSP)
* 接口多实现,
* 新建类,接口当参数入参,
*/
public class lspTest {
//打折活动
public interface Alarm {
double addAlarm(double price);
}
//折扣不同,海康
public static class HikAlarm implements Alarm {
private static final double RATIO_EIGHT = 0.8;
@Override
public double addAlarm(double price) {
return price * RATIO_EIGHT ;
}
}
//折扣不同,天津
public static class TianjAlarm implements Alarm {
private static final double RATIO_NINE = 0.9;
@Override
public double addAlarm(double price) {
return price * RATIO_NINE;
}
}
public static class ShoppingCart {
private final Alarm alarm;
public ShoppingCart(Alarm alarm) {
this.alarm = alarm;
}
public double cul() {
return this.alarm.addAlarm(3000);
}
}
public static void main(String[] args) {
Alarm hikAlarm = new HikAlarm();
ShoppingCart shoppingCart1 = new ShoppingCart(hikAlarm);
double result1 = shoppingCart1.cul();
System.out.println("八折 " + result1);
Alarm tianjAlarm = new TianjAlarm();
ShoppingCart shoppingCart2 = new ShoppingCart(tianjAlarm);
double result2 = shoppingCart2.cul();
System.out.println("九折 " + result2);
}
}