七个原则1-开闭原则
- 定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。
- 用抽象构建框架,用实现扩展细节
- 优点:提高软件系统的可复用性及可维护性。
示例-开闭原则UML图
示例:设计一个课程接口ICourse
,并且实现一个Java课程实现类JavaCourse
,当增加打折需求并要求展示原价时如何设计? 增加JavaCourse
的子类JavaDiscountCourse
,重写获取getPrice
方法,增加getOriginPrice
方法。遵循对扩展开放,对修改关闭。
接口: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());
}
}
网友评论