Каковы правильные имена классов / интерфейсов для шаблона публикации / подписки? - PullRequest
0 голосов
/ 17 ноября 2011

У меня есть этот интерфейс, чтобы позволить кому-то прослушивать определенное событие

interface XXX
{
    void subscribe( string event, func callback );
    void unsubscribe( string event, func callback );
}

Кроме того, у меня есть другой интерфейс, который предоставляет способ «опубликовать» событие.

interface YYY
{
    void publish( string event, params[] params );
}

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

class ZZZ: XXX, YYY
{

    void subscribe( string event, func callback )...
    void unsubscribe( string event, func callback )...
    void publish( string event, params[] params )...
}

Моя проблема в том, что я не могу понять, что должно быть правильнымимена для этих классов / интерфейсов. В настоящее время я использую IEventBroadcaster для подписки / отписки, IEventPublisher для публикуемой части и BroadcastStation для класса, реализующего оба.

Интересно, существуют ли какие-то стандартные названия дляэтот сценарий.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 17 ноября 2011

Я полагаю, вы ищете шаблон проектирования Observer : enter image description here

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

1 голос
/ 17 ноября 2011

Что не так с IPublisher и ISubscriber?Или, может быть, если вам нужна «гладкая» способность указывать интерфейсы, IPublishEvents и ISubscribeToEvents?

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

...