为具有相似结构的需求创建方法或服务

时间:2018-12-12 14:43:09

标签: angular typescript

我需要在我的角度应用程序(打字稿)中创建一个自定义日志。 当您按下某些操作按钮时。

日志正文如下:

  • 今天(YYYY-MM-DD)
  • 实际时间(hh:mm:ss)
  • 环境名称(env1,...,env5)
  • 方法动作(提取或下载)
  • 说明(在env1中提取或在env1中下载)

我当前的实现是下一个:

MyComponent

extraction(): void {
// bla bla bla code
this.loggerService.setMessage(setExtractionMessage());
console.log(this.loggerService.getMessage());
}

download(): void {
// bla bla bla code
this.loggerService.setMessage(setDownloadMessage());
console.log(this.loggerService.getMessage());
}

setDownloadMessage(): string {
const date = ...;
const time = ...;
const env = ...;
// same with all the constants

finalLog += date + time + env ...;
return finalLog;
} 

setExtractionMessage(): string {
const date = ...;
const time = ...;
const env = ...;
// same with all the constants

finalLog += date + time + env ...;
return finalLog;
} 

LoggerService.ts

setMessage(message: string) {
    this.message = '';
    this.message = message;
  }

  getMessage() {
    return this.message;
  }

对改善我的实施情况有什么建议吗? 预先感谢。

1 个答案:

答案 0 :(得分:1)

我将为Logger Service承担更多责任。定义所有消息类型的Enum,定义消息类型,发送参数并让logger服务完成工作。

enum Messages: {
    extraction,
    download,
    other
}

您的组件:

extraction(): void {
// bla bla bla code
this.loggerService.logger(Messages.extraction, parameters);
}

download(): void {
// bla bla bla code
this.loggerService.logger(Messages.download, parameters);
}

LoggerService

logger(type, parameters: any[]){
    switch(type) {
        case Messages.extraction:
        finalLog = parameters.map(t => ''+t).join(', ');
        console.log(finalLog);
        break;

        case Messages.download:
        finalLog = parameters.map(t => ''+t).join(', ');
        console.log(finalLog);
        break;
    }
}