zoukankan      html  css  js  c++  java
  • 设计模式课程 设计模式精讲 3-3 开闭原则 coding

    1    课程讲解

    1.1  开闭原则定义

    1.2  不重要内容

    2    代码coding

    2.1  基类

    2.2  需求:打印出原价和折扣后的价格。(接口不应该随意变化,面向接口编程)

    1    课程讲解

    1.1  开闭原则定义

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

    1.2  不重要内容 

    (抽象构建框架,实现扩展细节)

    2    代码coding

    2.1  基类

    测试类:

    package com.geely.design.principle.openclose;
    
    public class TestJavaCourse {
        public static void main(String[] args) {
            Icourse icourse = new JavaCourse(96,"java开发教程",298.00);
            System.out.println("购买课程编号为:"+icourse.getCourseId()+";课程名称为:"+icourse.getCourseName()+";课程价格为:"+icourse.getCourcePrice());
        }
    }

    实体类:

    package com.geely.design.principle.openclose;
    
    public class JavaCourse implements Icourse {
        private Integer courseId;
        private String courseName;
        private Double coursePrice;
    
        public JavaCourse(Integer courseId, String courseName, Double coursePrice) {
            this.courseId = courseId;
            this.courseName = courseName;
            this.coursePrice = coursePrice;
        }
    
        @Override
        public Integer getCourseId() {
            return this.courseId;
        }
    
        @Override
        public String getCourseName() {
            return this.courseName;
        }
    
        @Override
        public Double getCourcePrice() {
            return this.coursePrice;
        }
    }

    接口:

    package com.geely.design.principle.openclose;
    
    public interface Icourse {
        Integer getCourseId();//获取课程ID
        String getCourseName();//获取课程名称
        Double getCourcePrice();//获取课程价格
    
    }

    打印日志:

    购买课程编号为:96;课程名称为:java开发教程;课程价格为:298.0
    
    Process finished with exit code 0

    2.2  需求:打印出原价和折扣后的价格。(接口不应该随意变化,面向接口编程)

    测试类:

    package com.geely.design.principle.openclose;
    
    public class TestJavaCourse {
    
        public static void main(String[] args) {
            TestJavaCourse testJavaCourse = new TestJavaCourse();
            testJavaCourse.showDiscountPrice();
        }
    
        public void showDiscountPrice() {
            Icourse icourse = new JavaDiscountCourse(96,"java开发教程",298.00);
            JavaDiscountCourse javaCourse = (JavaDiscountCourse)icourse;
            System.out.println("购买课程编号为:"+icourse.getCourseId()+";课程名称为:"+icourse.getCourseName()+";课程价格为:"+javaCourse.getOrignalPrice()+"折后价格为:"+javaCourse.getDisCountPrice());
        }
    
        public void showOrignalPrice() {
            Icourse icourse = new JavaCourse(96,"java开发教程",298.00);
            System.out.println("购买课程编号为:"+icourse.getCourseId()+";课程名称为:"+icourse.getCourseName()+";课程价格为:"+icourse.getCourcePrice());
        }
    }

    实体类:

    package com.geely.design.principle.openclose;
    
    public class JavaCourse implements Icourse {
        private Integer courseId;
        private String courseName;
        private Double coursePrice;
    
        public JavaCourse(Integer courseId, String courseName, Double coursePrice) {
            this.courseId = courseId;
            this.courseName = courseName;
            this.coursePrice = coursePrice;
        }
    
        @Override
        public Integer getCourseId() {
            return this.courseId;
        }
    
        @Override
        public String getCourseName() {
            return this.courseName;
        }
    
        @Override
        public Double getCourcePrice() {
            return this.coursePrice;
        }
    }

    补充类:

    package com.geely.design.principle.openclose;
    
    public class JavaDiscountCourse extends JavaCourse{
    
        private Double coursePrice;
        public JavaDiscountCourse(Integer courseId, String courseName, Double coursePrice) {
            super(courseId, courseName, coursePrice);
        }
    
        public Double getDisCountPrice() {
            return super.getCourcePrice()*0.8;
        }
    
        public Double getOrignalPrice() {
            return super.getCourcePrice();
        }
    }

    接口:

    package com.geely.design.principle.openclose;
    
    public interface Icourse {
        Integer getCourseId();//获取课程ID
        String getCourseName();//获取课程名称
        Double getCourcePrice();//获取课程价格
    
    }

    测试结果:

    购买课程编号为:96;课程名称为:java开发教程;课程价格为:298.0折后价格为:238.4
    
    Process finished with exit code 0
  • 相关阅读:
    曲线与直线相切
    两函数切线
    导数+放缩
    选取拟合函数
    二分法求零点次数
    奇函数+方程的根与零点
    对数函数绝对值交点问题
    判断函数相等+判断反函数+判断周期函数
    已知分段函数零点个数求范围
    2020-05-03 助教一周小结(第十二周)
  • 原文地址:https://www.cnblogs.com/1446358788-qq/p/10959966.html
Copyright © 2011-2022 走看看