"Do-er"类与静态实用方法

Jam*_* P. 7 java oop

假设你有FileReader一个read方法的类.

我知道类级属性可以证明有一个实例.但是,ReaderUtils通过在相应static read方法的范围内提取这些相同的属性,停止创建等效类是什么?

简而言之,对于静态实用方法,"Doer"类究竟是什么?

cas*_*nca 2

OOP 的本质是将状态/数据以及相关行为封装起来。静态实用方法类似于过程语言中的全局函数——您将行为(静态方法)与状态(该方法的参数)分开,从而破坏了封装。

这在实践中意味着什么?reader.read()您必须调用,而不是能够调用ReaderUtils.read(file),这意味着您现在与实现紧密耦合——您已经做出了一个隐含的假设,即您将始终使用ReaderUtils并始终传入文件。

如果您使用通用Reader接口,则可以使用“FileReader今天”,但将其替换为“明天DatabaseReader”或“HttpReader明天”,而无需更改任何其他代码 - 所有reader.read()调用将继续以相同方式工作。