Я пытаюсь написать программу в объектно-ориентированном стиле. У меня есть некоторые путаницы при кодировании взаимодействия между двумя объектами.
Сценарий: Человек (Джон) дает Лицу (Бетти) $5.
Возможные решения (псевдокод):
A) John.pays(Betty, 5);
Б) Betty.receives(Иоанн, 5);
C) Bank.transfer(John, Betty, 5);
D)
начать транзакцию:
John.decrease(5);
Betty.increase(5);
завершение транзакции:
E) Service.transferMoney(John, Betty, 5);//Служба - это общий объект службы
Скажите, пожалуйста, какой из них является более подходящим способом кодирования в способе ООП и причиной этого. Я ищу некоторые рекомендации, такие как правило "Сообщить, не спрашивать".
Спасибо.