面试题答案
一键面试优化方案
- 依赖注入:通过将基础的数据获取和处理逻辑以依赖的形式注入到各个模块中,而不是模块直接依赖抽象类,这样可以降低模块与具体实现之间的耦合。
- 接口隔离:进一步细分抽象类中的方法,形成多个更细粒度的接口,每个模块仅依赖它实际需要的接口,而不是整个抽象类。
- 使用工厂模式:利用工厂模式创建基础数据获取和处理逻辑的实例,使得模块无需关心具体的创建过程,进一步降低耦合。
关键代码示例
- 接口隔离
// 定义数据获取接口 interface DataFetcher { fetchData(): Promise<any>; } // 定义数据处理接口 interface DataProcessor { processData(data: any): any; }
- 依赖注入
class ModuleA { private dataFetcher: DataFetcher; private dataProcessor: DataProcessor; constructor(dataFetcher: DataFetcher, dataProcessor: DataProcessor) { this.dataFetcher = dataFetcher; this.dataProcessor = dataProcessor; } async doWork() { const data = await this.dataFetcher.fetchData(); const processedData = this.dataProcessor.processData(data); // 后续处理 } }
- 工厂模式
class DataFetcherFactory { static createDataFetcher(): DataFetcher { // 返回具体的数据获取实现类实例 return new ConcreteDataFetcher(); } } class DataProcessorFactory { static createDataProcessor(): DataProcessor { // 返回具体的数据处理实现类实例 return new ConcreteDataProcessor(); } } // 使用工厂创建实例并注入 const dataFetcher = DataFetcherFactory.createDataFetcher(); const dataProcessor = DataProcessorFactory.createDataProcessor(); const moduleA = new ModuleA(dataFetcher, dataProcessor);