开闭原则

Posted linbq1911

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开闭原则相关的知识,希望对你有一定的参考价值。

1.定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。

2.用抽象构建框架,用实现扩展细节

3.优点:提高软件系统的可复用性及可维护性

4.实例目录package

技术分享图片

5.UML图

技术分享图片

6.代码

1 package com.geely.design.principle.openclose;
2 
3 public interface ICourse {
4     Integer getId();
5     String getName();
6     Double getPrice();
7     //Double getDiscountPrice();
8 }
 1 package com.geely.design.principle.openclose;
 2 
 3 public class JavaCourse implements ICourse {
 4     private Integer id;
 5     private String name;
 6     private Double price;
 7     public JavaCourse(){}
 8     public JavaCourse(Integer id, String name, Double price){
 9         this.id = id;
10         this.name = name;
11         this.price = price;
12     }
13 
14     public Integer getId() {
15         return id;
16     }
17 
18     /*public Double getDiscountPrice() {
19         return price * 0.8;
20     }*/
21 
22     public String getName() {
23         return name;
24     }
25 
26     public Double getPrice() {
27         return price;
28     }
29 
30     @Override
31     public String toString() {
32         return "JavaCourse[id="+id+",name="+name+",price="+price+"]";
33     }
34 }
 1 package com.geely.design.principle.openclose;
 2 
 3 public class JavaDiscountCourse extends JavaCourse {
 4     public JavaDiscountCourse(Integer id, String name, Double price){
 5         super(id,name,price);
 6     }
 7 
 8     /*public Double getOriginPrice(){
 9         return super.getPrice();
10     }
11     @Override
12     public Double getPrice() {
13         return super.getPrice() * 0.8;
14     }*/
15     public Double getDiscountPrice(){
16         return super.getPrice() * 0.8;
17     }
18     @Override
19     public Double getPrice() {
20         return super.getPrice();
21     }
22 }
 1 package com.geely.design.principle.openclose;
 2 
 3 public class Test {
 4     public static void main(String[] args) {
 5         ICourse iCourse = new JavaDiscountCourse(96,"java从零到企业级电商开发",348d);
 6         System.out.println(iCourse);
 7         JavaDiscountCourse javaCourse = (JavaDiscountCourse)iCourse;
 8         System.out.println("课程id:" + javaCourse.getId()+",课程名称:"+javaCourse.getName() 
        +",原价:"+javaCourse.getPrice()+ ",现价课程价格:" + javaCourse.getDiscountPrice()); 9 } 10 }

 


以上是关于开闭原则的主要内容,如果未能解决你的问题,请参考以下文章

开闭原则

设计模式软件设计七大原则 ( 开闭原则 )

设计模式六大原则:开闭原则

大话设计模式读书笔记——开闭原则

设计模式六大原则:开闭原则

开闭原则