Номенклатура и уточнение шаблона проектирования: поставщик, сервис, брокер - PullRequest
11 голосов
/ 29 сентября 2011

Может ли кто-нибудь определить для меня концептуальную разницу между Провайдером, Сервисом и Брокером?

Я регулярно пишу приложения MVC и переносу большую часть бизнес-логики в другие классы. Ничего особенного, просто передайте параметры и получите обратно экземпляры POCO.

Как правильно обозначить те классы, которые выполняют тяжелую работу для моего контроллера (ов)?

Ответы [ 2 ]

24 голосов
/ 29 сентября 2011

Провайдер - это просто другое название для паттерна стратегии

Обычно, когда кто-то упоминает об использовании провайдера, он говорит о каком-то абстрактном контракте, для которого может существовать много реализаций.

//As an abstract base class
public void SetupRoles(RoleProvider provider){}

//As an interface
public void SetupRoles(IRoleProvider provider){}

//As a delegate
public void SetupRoles(Action<String> addRole){}

Служба обычно предназначена для указания объекта без состояния, в котором есть только методы.Служба может быть использована в качестве Стратегии, но не обязательно должна быть.

//Plain old service... doesn't even need the web
// CRAZY TALK MAN!!!
public static class RoleService
{
    public static void SetupRoles(){};
    public static String[] GetRoles(){};
}

A Брокер действительно просто отвечает за хорошо ... посредничество.Он предназначен для перемещения сообщений между службами и объектами, организации взаимодействия между службами для обеспечения их изоляции.

public class Broker
{
    public void SendImportantMessage(Message msg)
    {
        //Do some important processing here
        // Maybe some validation
        NotifySomeOtherServiceOrClassOrMaybeBobFromAccounting(msg);
    }
}
2 голосов
/ 29 сентября 2011

Похоже, что это архитектурные шаблоны , а не шаблоны проектирования ;

...