美文网首页
七个原则1-开闭原则

七个原则1-开闭原则

作者: CC晨_程序小生 | 来源:发表于2018-12-25 14:20 被阅读0次

    七个原则1-开闭原则

    • 定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭
    • 用抽象构建框架,用实现扩展细节
    • 优点:提高软件系统的可复用性及可维护性。

    示例-开闭原则UML图

    示例:设计一个课程接口ICourse,并且实现一个Java课程实现类JavaCourse,当增加打折需求并要求展示原价时如何设计? 增加JavaCourse的子类JavaDiscountCourse,重写获取getPrice方法,增加getOriginPrice方法。遵循对扩展开放,对修改关闭

    示例-开闭原则UML

    接口: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());
        }
    }
    

    相关文章

      网友评论

          本文标题:七个原则1-开闭原则

          本文链接:https://www.haomeiwen.com/subject/cmrflqtx.html