TimurVI Asked:2020-10-15 09:41:15 +0800 CST2020-10-15 09:41:15 +0800 CST 2020-10-15 09:41:15 +0800 CST 低级和高级班 772 有时会遇到java诸如“低级类”和/或“高级类”之类的 ( ) 概念。 这些概念是否适用于任何在类上运行的编程语言? 是否可以给这些概念一个精确的描述或精确的定义? классы 3 个回答 Voted Best Answer Talleyran 2020-10-20T20:22:21+08:002020-10-20T20:22:21+08:00 如果我们谈论 java,那么我相信我们谈论的是 I/O 类。 低级类对低级数据进行操作并使用字节流(例如ByteArrayInputStream和FileInputStream), 而高级的是对象(例如, ObjectInputStream和BufferedInputStream)。 高级类在低级类之上工作,并且在数据抽象程度上有所不同。 例如,逐位读取文件的类将是低级的,而在 Unicode 中逐行读取文件的类将是高级。 如果我们走得更远,那么可能有一个类可以立即以 xml 对象的形式访问文件,并且与前一个相比,它会更高级别。 Suvitruf - Andrei Apanasik 2020-10-24T08:55:40+08:002020-10-24T08:55:40+08:00 当涉及到依赖倒置 (DiP) 时,我通常会遵守这些术语。你可以在这里详细阅读。 简而言之,低级类实际上是一个工人类,它执行一些动作,而高级类则管理这些“工人”。 DiP 中的信息是高级类不应该直接依赖于低级类,而是将这些类的对象(或创建它们的工厂)注入其中,从而将依赖关系带到泛型/接口级别。 例如,我们要打印字符。高级类包含复制逻辑,低级类:从键盘读取 ( KeyboardReader) 和打印 ( PrinterWriter)。 高级类不应该依赖于特定的实现。毕竟,我们以后可能想要,例如,不是输出到打印机,而是输出到文件 ( FileWriter) 等。如果你做得不好,那么就会有一个字符串PrinterWriter,你将不得不重写所有内容。 如果操作正确,它将是这样的: Высокоуровневый класс -> уровень абстракции -> низкоуровневый класс. Mikhail Chibel 2020-10-24T08:17:31+08:002020-10-24T08:17:31+08:00 在实践中,“高”和“低”的概念更多地应用于方法而不是类。这可能是因为这些概念在经典 OOP 中没有定义。 但是在某些地方你是对的,这些概念也与类有关。在java中,在官方文档中,低级和高级类的概念只出现在I/O类的上下文中。例如,类 'ByteArrayOutputStream'和'FileInputStream'是低级的,而'PrintStream', 'ObjectOutputStream','DataOutputStream'是高级的。此外,在描述依赖倒置原则时使用了高级和低级类的概念。 通常,某些类与其他类之间的区别在于抽象级别。将班级划分为低级和高级班是有条件的。对于任何高级课程,您可以提出一个更高级别(抽象)的课程,而对于任何低级别课程,您通常可以提出一个更具体的课程。
如果我们谈论 java,那么我相信我们谈论的是 I/O 类。
低级类对低级数据进行操作并使用字节流(例如ByteArrayInputStream和FileInputStream),
而高级的是对象(例如, ObjectInputStream和BufferedInputStream)。
高级类在低级类之上工作,并且在数据抽象程度上有所不同。
例如,逐位读取文件的类将是低级的,而在 Unicode 中逐行读取文件的类将是高级。
如果我们走得更远,那么可能有一个类可以立即以 xml 对象的形式访问文件,并且与前一个相比,它会更高级别。
当涉及到依赖倒置 (DiP) 时,我通常会遵守这些术语。你可以在这里详细阅读。
简而言之,低级类实际上是一个工人类,它执行一些动作,而高级类则管理这些“工人”。
DiP 中的信息是高级类不应该直接依赖于低级类,而是将这些类的对象(或创建它们的工厂)注入其中,从而将依赖关系带到泛型/接口级别。
例如,我们要打印字符。高级类包含复制逻辑,低级类:从键盘读取 (
KeyboardReader
) 和打印 (PrinterWriter
)。高级类不应该依赖于特定的实现。毕竟,我们以后可能想要,例如,不是输出到打印机,而是输出到文件 (
FileWriter
) 等。如果你做得不好,那么就会有一个字符串PrinterWriter
,你将不得不重写所有内容。如果操作正确,它将是这样的:
在实践中,“高”和“低”的概念更多地应用于方法而不是类。这可能是因为这些概念在经典 OOP 中没有定义。
但是在某些地方你是对的,这些概念也与类有关。在java中,在官方文档中,低级和高级类的概念只出现在I/O类的上下文中。例如,类
'ByteArrayOutputStream'
和'FileInputStream'
是低级的,而'PrintStream'
,'ObjectOutputStream'
,'DataOutputStream'
是高级的。此外,在描述依赖倒置原则时使用了高级和低级类的概念。通常,某些类与其他类之间的区别在于抽象级别。将班级划分为低级和高级班是有条件的。对于任何高级课程,您可以提出一个更高级别(抽象)的课程,而对于任何低级别课程,您通常可以提出一个更具体的课程。