设计原则之开闭原则
一、开闭原则是什么?
简单的说,开闭原则就是需要开发者尽量去保证代码功能的独立性,尽可能低倾入编程,废话不多说,看代码
1.定义接口
代码如下(示例):
public interface ICourse {
Integer getId();
String getName();
Double getPrice();
}
我们所定义的接口只是针对于课程这个大的类型所针对的共通特性进行抽象化的描述,并不能作为实际的业务实现来用,所以接下文
2.定义业务的具体实现
代码如下(示例):
@Data
@AllArgsConstructor
public abstract class JavaCourse implements ICourse{
private Integer id;
private String name;
private Double price;
public abstract Double getDiscountPrice();
}
现在我们定义一个叫做Java课程的子类去实现课程类所定义的方法,而课程所定义的方法正好会被我们子类的getter和setter方法所重写,此处定义抽象类是为了方便向下拓展,防止后期因为业务变更导致子类和父类之间的依赖度过高,当然此处也可以不去定义抽象方法,而是直接选择实现,此后的子类可以通过覆写来达成具体的业务逻辑
3.第一层实现的衍生
代码如下(示例):
public class JavaDiscountCourse extends JavaCourse {
public JavaDiscountCourse(Integer id, String name, Double price) {
super(id, name, price);
}
public Double getDiscountPrice(){
return super.getPrice() * 0.1;
}
public static void main(String[] args) {
ICourse iCourse = new JavaDiscountCourse(1,"Java",11800D);
System.out.println("课程ID:" + iCourse.getId() +
"\n课程标题:《" + iCourse.getName() + "》" +
"\n原价:" + iCourse.getPrice() +
"\n售价:" + ((JavaCourse)iCourse).getDiscountPrice());
}
}
到此,我们在拓展二级子类的时候就可以轻松的完成解耦,不过后期我们需要用到PHP类型的业务还是Python类型的业务,都可以通过实现抽象类完成不同的业务,进而让我们代码更加的方便拓展
总结
以上就是今天要讲的内容,只要是通过设计原则来牵起大家再编写程序时的共鸣,看大家是否有类似的业务可以通过开闭原则来重新实现,能否通过这种方式来提高代码的性能。原创不易,感谢支持。