1.OCP原则
定义
OCP(Open-Closed Principle,开闭原则)是面向对象设计中的一条重要原则,指的是一个软件实体应当对扩展开放,对修改关闭。简单来说,应该能够通过增加新的代码来扩展功能,而不必修改已有的代码。
组成部分
1.开放(Open)
系统应该是开放的,允许在不修改现有代码的情况下添加新的功能。
2.关闭(Closed)
系统应该是关闭的,不允许对现有的代码进行修改,防止引入新的错误。
结构形式
1.接口和抽象类
使用接口或抽象类定义系统的核心功能。
2.实现类
通过实现接口或继承抽象类来扩展系统的功能。
目的
提高软件系统的可扩展性和可维护性,减少由于代码修改引入的错误。
基本原理
通过设计系统的模块化和使用抽象来实现对扩展开放、对修改关闭。
2.依赖倒置原则(DIP)
定义
依赖倒置原则(Dependency Inversion Principle, DIP)是面向对象设计中的一条重要原则,指的是高层模块不应该依赖于低层模块,二者都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。
组成部分
1.高层模块
通常是业务逻辑层,负责完成系统的主要功能。
2.低层模块
通常是实现细节层,负责具体的实现任务。
3.抽象
接口或抽象类,定义模块之间的契约或协议。
结构形式
1.接口/抽象类
定义高层模块和低层模块的交互契约。
2.依赖注入
通过构造函数、属性或接口注入具体实现。
目的
减少系统模块之间的耦合,使系统更具灵活性和可维护性,并且更容易进行单元测试。
基本原理
通过依赖于抽象(如接口或抽象类),实现模块之间的松耦合。
3.控制反转(思想)
定义
控制反转(IoC)是一种设计思想,通过将对象的创建和依赖关系的管理权从对象本身反转给外部容器来实现组件之间的解耦。这种设计思想使得组件之间的依赖关系更加松散,提高了系统的可维护性和灵活性。
组成部分
1.依赖
组件或类所需要的外部资源或服务。
2.IoC 容器
负责创建对象并注入其所需依赖的外部管理机制。
3.依赖注入
IoC 的一种具体实现方式,将依赖注入到对象中。
结构形式
1.传统控制
对象自行创建和管理其依赖。
2.控制反转
对象依赖的创建和管理由外部容器负责。
分类
1.依赖注入(Dependency Injection, DI)
构造函数注入、属性注入、方法注入。
2.依赖查找(Dependency Lookup)
对象主动从容器中查找和获取依赖。
目的
1.解耦
减少类与类之间的直接依赖,增加代码的可维护性和灵活性。
2.可测试性
通过依赖注入,使得依赖对象可以被轻松替换为测试替身,方便单元测试。
3.重用性
通过将依赖的管理交给外部容器,使得类更加通用和易于复用。
基本原理
对象的创建和依赖关系由外部容器管理,组件不再自行管理其依赖对象。
4.根路径
定义
根路径(Root Path):指文件系统或URL中最高级别的目录。它是所有文件和子目录的起点,位于文件系统层次结构的顶层。
组成部分
1.文件系统中的根路径通常表示为 /(在 Unix 和类 Unix 系统中,如 Linux、macOS)或 C:\(在 Windows 系统中)。
2.URL 中的根路径通常指的是一个网站的起始位置,例如 https://www.example.com/。
结构形式
1.在文件系统中
根路径包含所有文件和子目录。
2.在 URL 中
根路径指向网站的主页或主目录。
分类
1.文件系统根路径
如 /(Unix 系统)和 C:\(Windows 系统)。
2.URL 根路径
目的
1.提供一个统一的起点,组织和管理所有文件和目录。
2.在网络环境中,定义资源访问的基础路径。
基本原理
根路径在文件系统中是最高级的目录,所有其他目录和文件都从此路径派生。在 URL 中,根路径是访问网站内容的基础起点。
5.类的根路径
定
类的根路径(Class Path)是Java虚拟机(JVM)和Java编译器用来查找类文件(.class)的路径集合。它指定了JVM和编译器在运行和编译Java程序时应该搜索的目录和JAR文件位置。
组成部分
目录
包含.class文件的文件夹。
JAR文件
Java归档文件,包含多个.class文件和相关资源。
ZIP文件
类似于JAR文件的压缩文件。
资源文件
资源文件类路径中可以包含其他类型的文件,如配置文件、图像文件等。
结构形式
类路径可以包含多个路径,这些路径用系统特定的分隔符分开(Windows系统用分号;,Unix系统用冒号:)。例如:
.;lib/foo.jar;lib/bar/
分类
1.系统类路径
由Java运行时环境(JRE)默认包含的路径,通常包含标准Java类库。
2.用户类路径
用户或开发人员指定的包含应用程序类文件和资源的路径。
目的
提供一个机制,使得JVM和编译器能够在正确的位置查找和加载所需的类文件和资源,确保Java程序能正常运行。
基本原理
当JVM启动时,或者当Java编译器编译代码时,它会根据类路径搜索目录和JAR文件来找到所需的.class文件和资源文件。如果在指定的类路径中找不到所需的类文件,JVM会抛出ClassNotFoundException或NoClassDefFoundError。原则
定义
OCP(Open-Closed Principle,开闭原则)是面向对象设计中的一条重要原则,指的是一个软件实体应当对扩展开放,对修改关闭。简单来说,应该能够通过增加新的代码来扩展功能,而不必修改已有的代码。
组成部分
1.开放(Open)
系统应该是开放的,允许在不修改现有代码的情况下添加新的功能。
2.关闭(Closed)
系统应该是关闭的,不允许对现有的代码进行修改,防止引入新的错误。
结构形式
1.接口和抽象类
使用接口或抽象类定义系统的核心功能。
2.实现类
通过实现接口或继承抽象类来扩展系统的功能。
目的
提高软件系统的可扩展性和可维护性,减少由于代码修改引入的错误。
基本原理
通过设计系统的模块化和使用抽象来实现对扩展开放、对修改关闭。
2.依赖倒置原则(DIP)
定义
依赖倒置原则(Dependency Inversion Principle, DIP)是面向对象设计中的一条重要原则,指的是高层模块不应该依赖于低层模块,二者都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。
组成部分
1.高层模块
通常是业务逻辑层,负责完成系统的主要功能。
2.低层模块
通常是实现细节层,负责具体的实现任务。
3.抽象
接口或抽象类,定义模块之间的契约或协议。
结构形式
1.接口/抽象类
定义高层模块和低层模块的交互契约。
2.依赖注入
通过构造函数、属性或接口注入具体实现。
目的
减少系统模块之间的耦合,使系统更具灵活性和可维护性,并且更容易进行单元测试。
基本原理
通过依赖于抽象(如接口或抽象类),实现模块之间的松耦合。
3.控制反转(思想)
定义
控制反转(IoC)是一种设计思想,通过将对象的创建和依赖关系的管理权从对象本身反转给外部容器来实现组件之间的解耦。这种设计思想使得组件之间的依赖关系更加松散,提高了系统的可维护性和灵活性。
组成部分
1.依赖
组件或类所需要的外部资源或服务。
2.IoC 容器
负责创建对象并注入其所需依赖的外部管理机制。
3.依赖注入
IoC 的一种具体实现方式,将依赖注入到对象中。
结构形式
1.传统控制
对象自行创建和管理其依赖。
2.控制反转
对象依赖的创建和管理由外部容器负责。
分类
1.依赖注入(Dependency Injection, DI)
构造函数注入、属性注入、方法注入。
2.依赖查找(Dependency Lookup)
对象主动从容器中查找和获取依赖。
目的
1.解耦
减少类与类之间的直接依赖,增加代码的可维护性和灵活性。
2.可测试性
通过依赖注入,使得依赖对象可以被轻松替换为测试替身,方便单元测试。
3.重用性
通过将依赖的管理交给外部容器,使得类更加通用和易于复用。
基本原理
对象的创建和依赖关系由外部容器管理,组件不再自行管理其依赖对象。
4.根路径
定义
根路径(Root Path):指文件系统或URL中最高级别的目录。它是所有文件和子目录的起点,位于文件系统层次结构的顶层。
组成部分
1.文件系统中的根路径通常表示为 /(在 Unix 和类 Unix 系统中,如 Linux、macOS)或 C:\(在 Windows 系统中)。
2.URL 中的根路径通常指的是一个网站的起始位置,例如 https://www.example.com/。
结构形式
1.在文件系统中
根路径包含所有文件和子目录。
2.在 URL 中
根路径指向网站的主页或主目录。
分类
1.文件系统根路径
如 /(Unix 系统)和 C:\(Windows 系统)。
2.URL 根路径
目的
1.提供一个统一的起点,组织和管理所有文件和目录。
2.在网络环境中,定义资源访问的基础路径。
基本原理
根路径在文件系统中是最高级的目录,所有其他目录和文件都从此路径派生。在 URL 中,根路径是访问网站内容的基础起点。
5.类的根路径
定
类的根路径(Class Path)是Java虚拟机(JVM)和Java编译器用来查找类文件(.class)的路径集合。它指定了JVM和编译器在运行和编译Java程序时应该搜索的目录和JAR文件位置。
组成部分
目录
包含.class文件的文件夹。
JAR文件
Java归档文件,包含多个.class文件和相关资源。
ZIP文件
类似于JAR文件的压缩文件。
资源文件
资源文件类路径中可以包含其他类型的文件,如配置文件、图像文件等。
结构形式
类路径可以包含多个路径,这些路径用系统特定的分隔符分开(Windows系统用分号;,Unix系统用冒号:)。例如:
.;lib/foo.jar;lib/bar/
分类
1.系统类路径
由Java运行时环境(JRE)默认包含的路径,通常包含标准Java类库。
2.用户类路径
用户或开发人员指定的包含应用程序类文件和资源的路径。
目的
提供一个机制,使得JVM和编译器能够在正确的位置查找和加载所需的类文件和资源,确保Java程序能正常运行。
基本原理
当JVM启动时,或者当Java编译器编译代码时,它会根据类路径搜索目录和JAR文件来找到所需的.class文件和资源文件。如果在指定的类路径中找不到所需的类文件,JVM会抛出ClassNotFoundException或NoClassDefFoundError。