Есть ли конкретное имя для следующего шаблона? - PullRequest
0 голосов
/ 26 апреля 2018

Я разработал фреймворк для предоставления некоторых веб-сервисов, основанных на отдыхе. Базовые классы выглядели так (не точный код)

public interface WSService {
    public void init(WSRequest request);
    public List<String> validate();
    public void performAction();
    public WSResponse generateResponse();
}

Каждый новый сервис реализует этот веб-сервис и реализует свою особую логику

public class WSOrders implements WSService {...}

Затем я реализовал WSProcessor, который принимает определенный класс, а затем выполняет методы и выполняет проверки ошибок / и т.д. например

@RestResource(GET, "/getorders")
public Response getOrders (...){
    WSService getOrders = new WSOrders();
    WSRequestProcessor processor = new WSRequestProcessor(restInput);
    processor.process(getOrders);    
}

в WSRequestProcessor, я использовал метод процесса, чтобы сначала извлечь входные данные из запроса покоя, выполнить проверку уровня приложения (проверка некоторых заголовков и т. Д.). Тогда называемые методы, как это

public WSRequestProcessor{
...

    public void process (WSService service){
        service.init()
        service.validate();
        service.performAction();
        service.generateResponse();
    }
}

Следует отметить, что WSRequestProcessor обрабатывает всю обработку исключений, создание общих сообщений об ошибках и т. Д.

Этот шаблон сработал довольно хорошо, чтобы раскрыть нам любой ресурс. В конце концов, чтобы раскрыть любой ресурс, все, что мне нужно (или любому разработчику), было создать WS<ResourceName> и реализовать там свою бизнес-логику.

1 Ответ

0 голосов
/ 26 апреля 2018

Сначала это выглядит просто как базовый полиморфизм, хотя я понимаю, почему вы захотите узнать, существует ли шаблон проектирования, на который это можно ссылаться. Сначала я бы сказал, что это слабо сплошной дизайн, а затем сказал бы, что есть базовая форма шаблона фасада для того, как разрабатывается метод getOrders, а затем, возможно, шаблон Command.

...