Где objectA хочет отправить сообщение в objectB, где должен жить метод?

Допустим, вы создали два объекта: objectA и objecB. Если objectA необходимо отправить сообщение в objectB, если это произойдет так:

objectA.theMessage(objectB)

или вот так:

objectB.theMessage(objectA)

Более конкретный пример:

Publisher p;
Subscriber s;

// way 1
p.addSubscriber(s);

// way 2
s.subscribeTo(p);

Как вы можете видеть, семантика обоих messeges (функций) одинакова, это просто вопрос, где должна жить функция.

Существует ли жесткое и быстрое правило, в котором говорится, что следует сделать? Или есть общее руководство, которое поможет вам определить, какой дизайн лучше? Или это дело в каждом конкретном случае, и не существует общего руководства? Если да, не могли бы вы объяснить, когда я буду использовать каждый из них. Можете ли вы назвать какие-либо потенциальные преимущества / недостатки каждого из них?

Большое спасибо за ваше время и знания!

1

Решение

Разница здесь в том, предпочитаете ли вы пуш или пулл паттерн. Какой из них лучше подходит, сильно зависит от приложения. «Толчок» в основном означает A посылает B сообщение, тогда как «тянуть» означает B получает сообщение от A,

Как уже говорилось, нет общего правила, но часто можно ответить на вопрос со здравым смыслом. Рассмотрим пример: сегодня утром мы с семьей завтракали. Раньше мне приходилось ехать в пекарню, чтобы получить хлебные булочки (это в Германии, нам нравится наш Brötchen). С другой стороны, газета, которую я читал за завтраком, принадлежала продавцу бумаги. Эта установка подходит: я сам хотел хлебные булочки, поэтому я поработал, чтобы их достать, но мне, наверное, было бы лень выходить на улицу и покупать газету (если ее не получат в пекарне). С другой стороны, если бы хлебные булочки были доставлены, а газета — нет, я бы в итоге получил более дорогие булочки и никакой газеты. Глупый пример конца.

Итак, что это значит для вашего дизайна? Тот, кому обязательно нужно сообщение было отправлено с A в B вызывает это. По моему опыту, это часто приемник, поэтому выбор тяг часто является первым выбором (кроме того, он позволяет легче ленивая оценка — только получить сообщение, когда это действительно необходимо). Но, как сказано, это действительно зависит от приложения. Сделай свой выбор 🙂

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]