依赖倒置原则 — 软件工程选择题
题目
某日志系统中,高层类 ReportService 的 generate() 方法内部直接 new 一个具体类 FileLogger 并调用其 write() 方法。现需支持数据库日志记录,同时希望该系统符合依赖倒置原则。下列改造方案中最恰当的是( )
A. 在 ReportService 中增加 if-else 分支,分别创建 FileLogger 和 DatabaseLogger
B. 定义抽象接口 Logger,让 FileLogger 和 DatabaseLogger 实现该接口,ReportService 依赖并调用 Logger 接口
C. 让 DatabaseLogger 继承 FileLogger 并重写 write() 方法
D. 将 write() 方法改为静态方法,通过类名直接调用