• 关于类和接口


    类和接口的区别,去除语法层面,谈谈编程层面的意义。

    设计原则SOLID:

    S:单一职责(SRP),Single Responsibility Principle

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

    L:里氏替换(LSP),Liskov Substitution Principle

    I: 接口隔离(ISP),Interface Segregation Principle

    D:依赖倒置(DIP),Dependency Inversion Principle

     关于设计模式,经常会说面向接口编程,而面向接口编程,对应的是哪一个原则呢?

    关于里氏替换和依赖倒置,应该是属于同一种编程技巧的两种表现形式。

    如果要实现里氏替换,那边必须是依赖倒置的,如果遵循了依赖倒置,那么也实现了里氏替换原则

    看一下JDBC的代码:

    1. public class DriverManager {
    2. // Worker method called by the public getConnection() methods.
    3. private static Connection getConnection(
    4. String url, java.util.Properties info, Class caller) throws SQLException {
    5. Connection con = aDriver.driver.connect(url, info);
    6. return (con);
    7. }
    8. }
    9. public interface Driver {
    10. Connection connect(String url, java.util.Properties info)
    11. throws SQLException;
    12. }
    13. public interface Connection extends Wrapper, AutoCloseable {
    14. }

    驱动管理类,获取连接的方法,就是依赖倒置原则的实现,面向的接口编程,依赖抽象。

    抛开具体的设计模式,在看不同框架的源码时,一般他们都是遵循了面向接口编程的,也就是依赖倒置。在变量类型、方法返回类型、入参类型都是接口或者抽象类,这样就实现了依赖倒置,也就是依赖接口。 这样做的优点,就是可以有不同的实现类型,而不用改动高层次的逻辑。

    再谈谈类和接口在编程中存在的意义,接口或者抽象类,可以用来定义目标、方向,属于高层次的;面向对象的继承和多态,完成了将目标、方向转化为行动,而行动就是具体的实现类。目标只有一个,而行动可以有很多。这也许就是类和接口存在的意义吧。

    然而,在工作中需要根据具体的需求进行开发,也不用过度使用设计模式,为了使用而使用,需要自己把握。

  • 相关阅读:
    基于ArcGIS水文分析、HEC-RAS模拟技术在洪水危险性及风险评估
    03 Spring_DI 依赖注入
    启动mysql 3.5时出现 MySql 服务正在启动 . MySql 服务无法启动。
    Go语言知识查漏补缺|基本数据类型
    仿热血江湖游戏类45method_3、method_4
    JAVA【idea中的@test使用scanner无法从键盘输入的问题】
    golang平滑重启库overseer实现原理
    download文件电脑上如何打开
    代码质量与安全 | “吃狗粮”能够影响到代码质量?来了解一下!
    面向AI时代的软件开发新范式
  • 原文地址:https://blog.csdn.net/htydowd/article/details/132597171