关于开闭原则 JavaDiscountCourse 类的设计

来源:3-3 开闭原则coding

Schwarzeni

2019-01-25

我一开始的想法是把原 JavaCourse类 作为 JavaDiscountCourse的一个成员变量,请问这样子的设计会有什么问题

public class JavaDiscountCourse implements ICourse{

    private JavaCourse javaCourse;

    public JavaDiscountCourse(String name, double price) {
        this.javaCourse = new JavaCourse(name, price);
    }

    @Override
    public String getName() {
        return this.javaCourse.getName();
    }

    @Override
    public double getPrice() {
        return this.javaCourse.getPrice() * 0.8;
    }

    public double getOriginPrice() {
        return this.javaCourse.getPrice();
    }
}
写回答

2回答

geelylucky

2019-01-25

亲爱的同学,你好,我是geely老师的助教。

你这样挺不错的。和老师的设计有不同的思路,赞。我再修改一下,看看能不能还有不一样的想法。

public class DiscountCourse implements ICourse{

    private ICourse course;
    
    //折扣
    private double discount;

    public JavaDiscountCourse(ICourse course, double discount) {
        this.course = course;
        this.discount = discount;
    }

    @Override
    public String getName() {
        return this.course.getName();
    }

    @Override
    public double getPrice() {
        return this.course.getPrice() * this.discount;
    }

    public double getOriginPrice() {
        return this.course.getPrice();
    }
}


1
1
Schwarzeni
非常感谢!
2019-01-25
共1条回复

Schwarzeni

提问者

2019-01-25

自己解决啦,原来后面课程组合复用那里涉及到了这个问题了

1
1
geelylucky
不错呦,多思考!!!
2019-01-25
共1条回复

Java设计模式精讲-Debug方式+内存分析

系统学习设计原则,设计模式,锤炼编码内功,赢取高薪Offer

3430 学习 · 407 问题

查看课程