• 第五十二:通过接口来引用对象


    第四十条中有一个建议:应该使用接口而不是类作为参数的类型。更一般的地讲,应该优先使用接口而不是具体实现类来引用对象。

    如果有合适的接口类型存在,那么对于参数,返回值,变量和域来说,就都应该使用接口类型进行声明。

    如果你养成了使用接口作为类型的习惯,你的程序将会更加灵活。

    如声明变量像这样:

    List<Apple>  list = new Vector<Apple>();

    而不是这样 Vector<Apple>  list = new Vector<Apple>();

    由于你使用了List来声明,你的变量在后面的阶段,后面的代码依赖于List接口,不会依赖于具体的实现类Vector类。

    这样你依据业务需求将具体的实现类更换成 ArrayList,而不会导致后面的代码编译出错。但是如果你后面的代码依赖

    与Vector类的某些特性,如同步策略,这是就不应该简单的将Vector更换为ArrayList。

    如果没有合适的接口存在,完全可以用类而不是接口来引用对象。例如值类,String和BigInteger。记住,值类很少

    会用多个实现编写。它们通常是final的,并且很少有对应的接口。使用这种值类作为参数,变量,域或者返回类型是

    再合适不过的选择了。更一般的讲,如果具体类没有相关联的接口,不管它是否表示一个值,你都没有别的选择,只有

    通过它的类来引用它的对象。Random类就属于这种情形。

  • 相关阅读:
    Typora入门使用
    什么是Structed Streaming?
    Spark的join什么情况下可以避免shuffle?
    spark Executor启动过程分析
    在IDEA中使用Git
    Git和SVN的区别
    Flink on Yarn的两种模式
    如何查看执行计划
    SQL Server 堆表与栈表的对比(大表)
    SQL Server中CURD语句的锁流程分析
  • 原文地址:https://www.cnblogs.com/wangliyue/p/4514649.html
Copyright © 2020-2023  润新知