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