Mam do zaprojektowania i zakodowania system bankowy (ćwiczenie na studia). Niektóre z założeń są następujące:
Dozwolone operacje bankowe: przelew, depozyt, transfer (przelew międzynarodowy).
Dodatkowo klient powinien móc poprosić o utworzenie nowego konta, zmiana konta głównego na inne, usunięcie konta itp.
Wszystkie te operacje muszą być przetwarzane i walidowane przez bank.
Problem jest sposób zaprojektowania komunikacji między klientem, a bankiem, tak żeby obiekt klasy Client nie miał dostępu do publicznych metod klasy Bank - takich jak chociażby tworzenie nowych klientów.
Pomyślałem, że stworzę klasę Mediator, która będzie odbierać prośby od klienta i przekazywać je do banku, uniemożliwiając klasie Client bezpośredni kontakt z klasą Bank i jej metodami. Wszystkie 3 klasy miałyby implementować ten sam interfejs IBank, który zawierałby metody opisane wyżej (przelew, depozyt itd.). Client miałby referencję do obiektu klasy Mediator a mediator referencję do obiektu Bank i tak by to działało.
Problem w tym że teraz klasa Mediator ma dostęp do publicznych metod banku :/. Nie wiem jak sobie z tym poradzić ? Może jest jakiś wzorzec projektowy do tego?