Разная реакция на ошибку для разных клиентов - Дизайн программного обеспечения / Архитектура - PullRequest
0 голосов
/ 03 мая 2018

Мне нужно создать разные сообщения об ошибках для разных интерфейсов (клиентов). Теперь я не знаю, сколько клиентов будет там. Я хочу правильно спроектировать этот сценарий. Я создал прототип, как показано ниже. Это правильный способ сделать? Пожалуйста, помогите мне выбрать правильный шаблон дизайна для этого сценария.

Интерфейс

IClientErrorResponseBuilder {
   getFailureResponse()
}

Первый клиент

FirstClientErrorResponseBuilder implements IClientErrorResponseBuilder {

 getFailureResponse(e: Exception) {

   return {
    code: e.code,
    message: e.message,
   }
 }
}

Второй клиент

SecondClientErrorResponseBuilder implements IClientErrorResponseBuilder {


 getFailureResponse(e: Exception ) {

   return {
    code: e.code,
    message: e.message,
    reason: "SOME REASON",
   }
 }
}

с контроллеров

import IClientErrorResponseBuilder;

// When instantiated, it will resolve dependency for ErrorResponseBuilder
class FirstController  {

    private errorBuilder;

    constructor(errorBuilder: IClientErrorResponseBuilder) {

        this.errorBuilder = errorBuilder;
    }

    public handler() {

        try {
            // do the stuffs

        }catch(e) {
            // If error
            this.errorBuilder.getFailureResponse(e);
        }
    }

}

// Когда создается экземпляр, он разрешает зависимость для ErrorResponseBuilder

class SecondController  {

    private errorBuilder;

    constructor(errorBuilder: IClientErrorResponseBuilder) {

        this.errorBuilder = errorBuilder;
    }

    public handler() {

        try {
            // do the stuffs

        }catch(e) {
            // If error
            this.errorBuilder.getFailureResponse(e);
        }
    }

}
...