Java设计原则(一)开闭原则

开闭原则

定义

一个软件的实体,如类、模块、函数应该对扩展开放,对修改关闭。
用抽象构建框架,用实现扩展细节。

优点

提高软件系统的可用性及可维护性

代码演示


public interface ICourse {Integer getId();String getName();Double getPrice();
}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;}@Overridepublic Integer getId() {return this.id;}@Overridepublic String getName() {return this.name;}@Overridepublic Double getPrice() {return this.price;}
}public class OpenCloseTest {public static void main(String[] args) {ICourse iCourse = new JavaCourse(1, "Java架构", 11800D);System.out.println("课程Id:" + iCourse.getId() +"\n课程名称:" + iCourse.getName() +"\n原价:" + iCourse.getPrice() );}
}

当有新的需求的时候:课程价格8折
添加新的类: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 OpenCloseTest {public static void main(String[] args) {JavaDiscountCourse iCourse = new JavaDiscountCourse(1, "Java架构", 11800D);System.out.println("课程Id:" + iCourse.getId() +"\n课程名称:" + iCourse.getName() +"\n原价:" + iCourse.getPrice() +"\n售价:" + iCourse.getDiscountPrice());}
}

总结

因需求变更导致需要增加新的方法的时候,为了保证不对已经发布(上传)的类或接口修改,创建一个新的类来继承原有的实现类从而达到扩展的目的。
里氏替换原则对这种继承做了限制。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部