首页 > 编程语言 >JAVA基础

JAVA基础

时间:2024-07-27 13:53:59浏览次数:7  
标签:依赖 JAVA 子类 基础 模式 工厂 抽象 接口

一.编程思维和算法构建

  1.抽象基类

      ①AbstractCollection
      ②AbstractList
      ③AbstractQueue
      ④AbstractSequentialList
      ⑤AbstractMap
      ⑥AbstractSet
      详情

  2.SOLID原则

      ①单一职责原则(SRP)——— 应该有且仅有一个原因引起类的变更。简单地说:接口职责应该单一,不要承担过多的职责。

      ②开闭原则(OCP)—— 一个软件实体,如类、模块和函数应该对扩展开放,对修改关闭。简单地说:就是当别人要修改软件功能的时候,使得他不能修改我们原有代码,只能新增代码实现软件功能修改的目的。

      ③里氏替换原则(LSP)—— 所有引用基类的地方必须能透明地使用其子类的对象。简单地说:所有父类能出现的地方,子类就可以出现,并且替换了也不会出现任何错误。这就要求子类的所有相同方法,都必须遵循父类的约定,否则当父类替换为子类时就会出错。里氏替换原则 LSP 重点强调:对使用者来说,能够使用父类的地方,一定可以使用其子类,并且预期结果是一致的。

      ④接口隔离原则(ISP)—— 类间的依赖关系应该建立在最小的接口上。简单地说:接口的内容一定要尽可能地小,能有多小就多小。在软件设计中,ISP 提倡不要将一个大而全的接口扔给使用者,而是将每个使用者关注的接口进行隔离。

      ⑤依赖倒置原则(DIP)—— 高层模块不应该依赖底层模块,两者都应该依赖其抽象。抽象不应该依赖细节,即接口或抽象类不依赖于实现类。细节应该依赖抽象,即实现类不应该依赖于接口或抽象类。简单地说,就是说我们应该面向接口编程。通过抽象成接口,使各个类的实现彼此独立,实现类之间的松耦合。软件设计的 DIP 提倡使用者依赖一个抽象的服务接口,而不是去依赖一个具体的服务执行者,从依赖具体实现转向到依赖抽象接口,倒置过来。

      详情

  3.常见设计模式

    工厂模式

      简单工厂模式(也叫静态工厂模式) —— 简单工厂模式不是一个正式的设计模式,但它是工厂模式的基础。它使用一个单独的工厂类来创建不同的对象,根据传入的参数决定创建哪种类型的对象。会违反OOP原则 —— 开闭原则:一个软件实体应当对扩展开放,对修改关闭。

      工厂方法模式(也叫静态工厂模式) —— 工厂方法模式定义了一个创建对象的接口,但由子类决定实例化哪个类。工厂方法将对象的创建延迟到子类。该工厂有不修改工厂类的前提,也就是说不修改已有类,实现对扩展是开发,对修改关闭。

      抽象工厂模式 —— 抽象工厂模式提供一个创建一系列相关或互相依赖对象的接口,而无需指定它们具体的类。围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

      三种工厂模式最终目的都是为了解耦。

      简单工厂模式和工厂方法模式详情

      抽象工厂方法模式详情

    单例模式

      单例模式是指在整个系统生命周期内,保证一个类只能产生一个实例,确保该类的唯一性。序列化和反射可以破坏单例模式

      详情中有段话打错了:"假设在这里没有第二次判断的话,线程a就会再次创建一个新的对象,所以,要在这里再加一次判断。"中的线程a应改为线程b

      写了一个小时了该休息一天了。

标签:依赖,JAVA,子类,基础,模式,工厂,抽象,接口
From: https://www.cnblogs.com/qdhys/p/18326763

相关文章

  • 梅瑟莫帮我学Java之学生考试系统(中残缺版)
    part1起始入口及功能//======================起始入口及功能=================================================privateConnectiongetConnection()throwsException{//加载MySQLJDBC驱动Class.forName("com.mysql.cj.jdbc.Driver");Connectio......
  • 深入理解 JavaScript 单例模式及其应用
    引言在JavaScript开发中,设计模式是解决特定问题的有效手段。单例模式(SingletonPattern)是其中一种常见且有用的模式。尽管网上有许多关于单例模式的解释和实现,本篇将从实际工作中的需求出发,探讨如何更好地理解和应用单例模式,以编写更复用、更高效的代码。什么是单例模式?单例模......
  • Java类加载器实现机制详细笔记
    1.类加载器的基本概念类加载器(ClassLoader):在Java中,类加载器负责将Java类动态加载到JVM中。它是实现动态类加载机制的核心组件,对于开发复杂应用程序(如插件系统、模块化设计等)至关重要。2.类加载过程加载(Loading):从文件系统或网络读取.class文件,创建包含类数据的Class对象......
  • C 语言基础
    C语言1.入门优点:功能强大操作系统、嵌入式、动态库、服务器、应用程序、外挂、其他语言等执行效率高C语言描述问题比汇编语言简练,而代码质量与汇编语言相当可移植性好一个环境上用C语言编写的程序,不改动或稍加改动,就可移植到另一个完全不同的环境中运行缺点:面......
  • 3.5 JavaScript——常用库
    jQuery更加方便控制前端组件和属性使用方式在<head>元素中添加:<scriptsrc="https://cdn.acwing.com/static/jquery/js/jquery-3.3.1.min.js"></script>按jQuery官网提示下载选择器$(selector)类似于CSS选择器。例如:let$div=$('div');//通过jQuery获取div,$符号用......
  • Java漏洞复现(ctfshow279-297)strust 漏洞复现及原理解释
    Java漏洞复现Strust原理JavaEE--------Struts2框架-CSDN博客Web279struts2漏洞S2-001是当用户提交表单数据且验证失败时,服务器使用OGNL表达式解析用户先前提交的参数值,%{value}并重新填充相应的表单数据。这里的%{value}简单理解就是和flask的模板注入{{}}差不多......
  • 编写Java,实现客户端向服务端上传文件的功能
    需求说明:实现客户端向服务端上传文件的功能当启动服务端后,运行客户端程序,系统提示客户在客户端输入上传文件的完整路径。当客户在客户端输入完成后,服务端实现文件上传实现思路:创建客户端类FileClient和服务端类FileServer在客户端类中定义uploadFile(Socketsocket)方......
  • java学习进度
    7.21(1)方法练习代码示例://判断数组中某一个数是否存在importjava.util.Scanner;publicclassFangfa{publicstaticvoidmain(String[]args){intarr[]=newint[]{11,45,14,19,19};Scannersc=newScanner(System.in);inttemp=sc.nextInt();sc.close();boolean......
  • Java使用xlsx-streamer和EasyExcel解决读取超大excel文件数据处理方法
    前言最近有个项目在生产环境做数据导入时,发现开始执行导入任务会出现cpu狂飙的情况。几番定位查找发现是在读取excel的时候导致此问题的发生,因此在通常使用的为POI的普通读取,在遇到大数据量excel,50MB大小或数五十万行的级别的数据容易导致读取时内存溢出或者cpu飙升。需要注意,本......
  • Java基础语法(变量)
    +号的使用在Java中,如果在一个运算表达式中,从左往右只要有一方是字符串,那么后续的运算就会被视为字符串的拼接运算。一、基本数据类型整数类型byte:占用1个字节(8位)。取值范围:-128到127。示例:byteb=10;short:占用2个字节(16位)。取值范围:-32768到32......