当前位置: 首页 > news >正文

关于类和接口

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

设计原则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的代码:

public class DriverManager {//  Worker method called by the public getConnection() methods.private static Connection getConnection(String url, java.util.Properties info, Class<?> caller) throws SQLException {Connection con = aDriver.driver.connect(url, info);return (con);}
}public interface Driver {Connection connect(String url, java.util.Properties info)throws SQLException;}public interface Connection  extends Wrapper, AutoCloseable {}

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

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

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

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

http://www.lryc.cn/news/148529.html

相关文章:

  • 网络安全社区与资源分享: 推荐网络安全社区、论坛、博客、培训资源等,帮助从业者拓展人脉和知识。
  • SAP MM学习笔记26- SAP中 振替转记(转移过账)和 在库转送(库存转储)5 - 总结
  • Stable Diffusion WebUI提示词Prompts常用推荐
  • Android 13 Ethernet变更
  • 基于单片机的超声波语音测距系统
  • 算法系列-力扣876-求链表的中间节点
  • SpringBoot集成Redis、Redisson保姆教程【附源码】
  • c++多线程中常用的使用方法
  • 【dart】dart基础学习使用(一):变量、操作符、注释和库操作
  • element-plus 设置 el-date-picker 弹出框位置
  • C++day7(auto关键字、lambda表达式、C++中的数据类型转换、C++标准模板库(STL)、list、文件操作)
  • 纽扣电池/锂电池UN38.3安全检测报告
  • K8S:K8S自动化运维容器Docker集群
  • Java的guava 限流写法
  • [uniapp] scroll-view 简单实现 u-tabbar效果
  • vue常见问题汇总
  • GPT-3在化学中进行低数据发现是否足够?
  • gitlab升级
  • Matlab图像处理-灰度插值法
  • axios 或 fetch 如何实现对发出的请求的终止?
  • ChatGPT Prompting开发实战(四)
  • Windows和Linux环境中安装Zookeeper具体操作
  • 41、Flink之Hive 方言介绍及详细示例
  • docker环境安装软件、更换镜像源以及E: Unable to locate package xxx解决
  • 夸克扫描王App用上了AI大模型 让扫描更清楚、提取文字更方便
  • 代价高昂的 IT 错误:识别并避免供应商锁定
  • HBase集群环境搭建与测试
  • 【iOS】Masonry的基本使用
  • 浅析SAS协议:链路层
  • ES6之浅尝辄止1:class的用法