七个原则1-开闭原则

2018-12-25  本文已影响0人  CC晨_程序小生

七个原则1-开闭原则

示例-开闭原则UML图

示例:设计一个课程接口ICourse,并且实现一个Java课程实现类JavaCourse,当增加打折需求并要求展示原价时如何设计? 增加JavaCourse的子类JavaDiscountCourse,重写获取getPrice方法,增加getOriginPrice方法。遵循对扩展开放,对修改关闭

示例-开闭原则UML

接口:Course

public interface ICourse {    
    Integer getId();    
    String getName();    
    Double getPrice();
}

类:JavaCourse

public class JavaCourse implements ICourse{
    private Integer id;
    private String name;
    private Double price;

    public JavaCourse(Integer id, String name, Double price) {
        this.id = id;
        this.name = name;
        this.price = price;
    }

    @Override
    public Integer getId() {
        return this.id;
    }
    @Override
    public String getName() {
        return this.name;
    }
    @Override
    public Double getPrice() {
        return this.price;
    }
}

类:JavaDiscountCourse

public class JavaDiscountCourse extends JavaCourse {
    public JavaDiscountCourse(Integer id, String name, Double price) {
        super(id, name, price);
    }

    public Double getDiscountPrice(){
        return super.getPrice()*0.8;
    }
}

测试类

public class Test {
    public static void main(String[] args) {
        ICourse iCourse = new JavaDiscountCourse(99,"Java设计模式学习",998d);
        JavaDiscountCourse javaCourse = (JavaDiscountCourse)iCourse;

        System.out.println("课程ID:"+javaCourse.getId()
                +"\n课程名称:"+javaCourse.getName()
                +"\n课程折扣价格:"+javaCourse.getDiscountPrice()
                +"\n课程价格:"+javaCourse.getPrice());
    }
}
上一篇 下一篇

猜你喜欢

热点阅读