开闭原则 (Open Closed Principle OCP)是指 一个软件产品只要在生命周期内,都会发生变化,即然变化是一个事实,我们就应该在设计时尽量适应这些变化,以提高项目的稳定性和灵活性,真正实现“拥抱变化”。我们应尽量通过扩展软件实体的行为来实现变化,而不是通过修改现有代码来完成变化,它是为软件实体的未来事件而制定的对现行开发设计进行约束的一个原则。
1.机器接口
public interface IMachine {
String getName();
BigDecimal getPrice();
}
2.通用机器
public class Machine implements IMachine{
private String name;
private BigDecimal price;
public Machine(String name, BigDecimal price) {
this.name = name;
this.price = price;
}
@Override
public String getName() {
return this.name;
}
@Override
public BigDecimal getPrice() {
return price;
}
}
3.在不改动代码的情况下 对通用机器价格进行打折
public class DiscountMachine extends Machine {
public DiscountMachine(String name, BigDecimal price) {
super(name, price);
}
@Override
public BigDecimal getPrice() {
return super.getPrice();
}
public BigDecimal getDiscountPrice(String discountRate) {
return super.getPrice().multiply(new BigDecimal(discountRate));
}
}
4.测试类
public class OpenCloseTest {
public static void main(String [] args){
Machine machine = new DiscountMachine("微星机器", BigDecimal.TEN);
BigDecimal discountPrice = ((DiscountMachine) machine).getDiscountPrice("0.6");
System.out.println("discountPrice:" + discountPrice);
}
}