• 继承和实现该如何选择


    平时在我们工作中应该可以看到大量继承和实现的代码,那么此时就有一个问题了,什么时候用继承(extends),什么时候用实现(implements)呢?

    1. 什么时候用到继承?

    如果说项目中有重复的代码块,可以将这些重复的代码块收提取出来放到一个公共类中,让其他的模块继承这个类。例如:

    1. public class EasySqlInjector extends DefaultSqlInjector {
    2. @Override
    3. public List<AbstractMethod> getMethodList(Class mapperClass, TableInfo tableInfo) {
    4. // 注意:此SQL注入器继承了DefaultSqlInjector(默认注入器),调用了DefaultSqlInjector的getMethodList方法,保留了mybatis-plus的自带方法
    5. List<AbstractMethod> methodList = super.getMethodList(mapperClass, tableInfo);
    6. methodList.add(new InsertBatchSomeColumn(i -> i.getFieldFill() != FieldFill.UPDATE));
    7. return methodList;
    8. }
    9. }

    我在用到mybatisplus批量插入的时候构造了一个sql注入器,我让其继承了一个DefaultSqlInjector类,那么这个类就相当于父类,并且用到了父类中getMethodList方法,这个方法就相当于公用的代码,如果还有其他子类想要使用这个方法时只需继承这个类就好。

    所以说:当有重复的代码块时,将其抽取出来放到一个公共类中,使其子类继承这个类即可。

    2 . 什么时候用到实现?

    如果项目中的模块都遵循于一个规范,这个规范每个模块的实现参数都不同,那么可以将这些参数都提取到接口中,其他模块实现此接口定义自己的相关功能即可。例如:

    一个AbstractSqlInjector实现了ISqlInjector这样的一个接口,可以发现接口中定义了一套规则(没有具体的方法体,只有方法和参数),当有其他的类想要用到这套规则时自己实现该接口就好。

  • 相关阅读:
    郑州大学编译原理实验二语法分析器JAVA
    示波器电流探头消磁如何正确操作
    不就是Java吗之 String类 PartII
    React的thunk中间件
    QGIS编译(跨平台编译)之五十一:qgis_native库在Qt Creator环境下编译的错误处理
    机器学习理论公式推导及原理—决策树
    21天学习第十一天-Set集合
    根据图片识别文字很难?其实很简单的
    NPM相关
    记一次SQL优化
  • 原文地址:https://blog.csdn.net/qq_50652600/article/details/126172768