// Logger接口定义
interface Logger {
log(message: string): void;
}
// Logger实现类
class ConsoleLogger implements Logger {
log(message: string) {
console.log(message);
}
}
// DataFetcher接口定义
interface DataFetcher {
fetchData(): Promise<string>;
}
// DataFetcher实现类
class ApiDataFetcher implements DataFetcher {
async fetchData() {
// 模拟从API获取数据
return "Mocked data from API";
}
}
// App类,通过组合实现功能
class App {
private logger: Logger;
private dataFetcher: DataFetcher;
constructor(logger: Logger, dataFetcher: DataFetcher) {
this.logger = logger;
this.dataFetcher = dataFetcher;
}
async run() {
try {
this.logger.log('开始获取数据');
const data = await this.dataFetcher.fetchData();
this.logger.log('数据获取成功: ' + data);
return data;
} catch (error) {
this.logger.log('数据获取失败: ' + error.message);
throw error;
}
}
}
// 使用示例
const logger = new ConsoleLogger();
const dataFetcher = new ApiDataFetcher();
const app = new App(logger, dataFetcher);
app.run().then(data => console.log('最终获取的数据:', data)).catch(error => console.error('运行App出错:', error));