Это похоже на фабричный метод? Подскажите где я делаю ошибки
Абстракция на абстракции сидит и абстракцией погоняет. При этом гибкости нет: конкретный класс впилен как зависимость в абстрактный класс Booker, который все потомки наследуют. В чём смысл такой фабрики?
https://refactoring.guru/ru/design-patterns/php
Всё плоха бро. Абстрактный класс букер и наследники от него норм. А вот калькулятор можно сделать и получше. Фабричного метода тут конечно же нету.
Сайт так себе, есть неточности
хотя букер не норм. Метод pay() какойто херово читаемый. Это вот когда всё на 1 странице еще +- понятно зачем мультипилкатор, а когда в разных файлах будет хрен разберешь как это работает. Настока неочевидно што пездец.
Привет! Какой ты видишь смысла в интерфейсе Calculator?
Привет. Кальулятор должен определять обязательные методы, необходимые для расчета зарплаты. У меня только 1 метод, потому что я делал примерный кейс. А в реальной жизни наверняка существуют какие-то сложные формулы, по которым вычисляют зарплату. А почему вы спросили? Можете что-то мне посоветовать?
показалось такое решение странным
а как бы вы написали?
старайся избегать цепочек наследования Employee -> Teacher лучше чем Booker -> Employee -> Teacher
а объясните пожалуйста, почему их нужно избегать? Я пытался сделать фабричный метод, Booker ведь абстрактный класс, а Employee содержит в себе некую дефолтную реализацию профессии. И от них уже отпочковываются конкретные профессии: Teacher, Nurse
в общем случае - повышает связанность
превратите класс Booker в интерфейс, его функционал перенесите в Employee, в функции PaymentSystem::addEmployee сделайте зависимость не от абстрактного класса, а от интерфейса. Интерфейс Calculator в рамках текущей задачи немного не при чем.
Обсуждают сегодня