zoukankan      html  css  js  c++  java
  • 代码设计原则(一) 开闭原则

    开闭原则(Open-Closed Principle,OCP)

    一个软件实体如类、模块和函数应该对扩展开放, 对修改关闭。所谓的开闭,也正是对扩展和修改两个行为的一个原则。强调的是用抽象构建框架,用实 现扩展细节。可以提高软件系统的可复用性及可维护性。开闭原则,是面向对象设计中最基础的设计原 则。它指导我们如何建立稳定灵活的系统,例如:我们版本更新,我尽可能不修改源代码,但是可以增 加新功能。

    • 一个课程系统里面,有不同的课程,课程有统一的行为,获得课程的id,名称,价格,定义一个抽象接口ICourse:

      public interface ICourse {
          Long getId();
          BigDecimal getPrice();
          String getName();
      }
      
    • java课程继承了ICourse,内部实现相关的方法,如果有其他的课程,也这样实现

      public class JavaClass implements  ICourse {
      
          private Long id ;
          private BigDecimal price;
          private String name;
      
          public JavaClass(Long id, BigDecimal price, String name) {
              this.id = id;
              this.price = price;
              this.name = name;
          }
      
          @Override
          public Long getId() {
              return id;
          }
      
          @Override
          public BigDecimal getPrice() {
              return price;
          }
      
          @Override
          public String getName() {
              return name;
          }
      }
      
    • 我们要对课程进行打折,不同课程的打折力度不一样,有的课程不打折,所以不能改变ICourse的接口,在实现类中进行价格的计算:

      public class JavaDsicountClass extends JavaClass {
      
          public JavaDsicountClass(Long id, BigDecimal price, String name) {
              super(id, price, name);
          }
      
          public  BigDecimal getDiscountPrice(){
              BigDecimal price = this.getPrice();
              //高精度计算使用BigDecimal内部运算的方法
              BigDecimal discountPrice = price.multiply(BigDecimal.valueOf(0.6));
              return discountPrice;
          }
      }
      
    • 为了不影响原来的价格,对打折的价格除进行了单独额处理,总体类图如下

  • 相关阅读:
    ue4 材质表达式分类
    UE4材质特别属生记录
    tangent space与object space
    better-scroll插件 api
    better-scroll 与 Vue 结合
    git 简介
    vue 插件
    前端小程序——js+canvas 给图片添加水印
    使用Node.js给图片加水印的方法
    Vue框架 周期
  • 原文地址:https://www.cnblogs.com/zf-blog/p/13432348.html
Copyright © 2011-2022 走看看