170 похожих чатов

Я учу паттерны. Написал такой код, который вычисляет зарплату работников: https://phpsandbox.io/e/x/16z8f



Это похоже на фабричный метод? Подскажите где я делаю ошибки

13 ответов

14 просмотров

Абстракция на абстракции сидит и абстракцией погоняет. При этом гибкости нет: конкретный класс впилен как зависимость в абстрактный класс Booker, который все потомки наследуют. В чём смысл такой фабрики?

https://refactoring.guru/ru/design-patterns/php

Всё плоха бро. Абстрактный класс букер и наследники от него норм. А вот калькулятор можно сделать и получше. Фабричного метода тут конечно же нету.

Rone
https://refactoring.guru/ru/design-patterns/php

Сайт так себе, есть неточности

хотя букер не норм. Метод pay() какойто херово читаемый. Это вот когда всё на 1 странице еще +- понятно зачем мультипилкатор, а когда в разных файлах будет хрен разберешь как это работает. Настока неочевидно што пездец.

Привет! Какой ты видишь смысла в интерфейсе Calculator?

Влад- Автор вопроса
Alexander
Привет! Какой ты видишь смысла в интерфейсе Calcul...

Привет. Кальулятор должен определять обязательные методы, необходимые для расчета зарплаты. У меня только 1 метод, потому что я делал примерный кейс. А в реальной жизни наверняка существуют какие-то сложные формулы, по которым вычисляют зарплату. А почему вы спросили? Можете что-то мне посоветовать?

Влад- Автор вопроса
Влад
Привет. Кальулятор должен определять обязательные ...

старайся избегать цепочек наследования Employee -> Teacher лучше чем Booker -> Employee -> Teacher

Влад- Автор вопроса
Boris Pechorin
старайся избегать цепочек наследования Employee ->...

а объясните пожалуйста, почему их нужно избегать? Я пытался сделать фабричный метод, Booker ведь абстрактный класс, а Employee содержит в себе некую дефолтную реализацию профессии. И от них уже отпочковываются конкретные профессии: Teacher, Nurse

Влад
а как бы вы написали?

превратите класс Booker в интерфейс, его функционал перенесите в Employee, в функции PaymentSystem::addEmployee сделайте зависимость не от абстрактного класса, а от интерфейса. Интерфейс Calculator в рамках текущей задачи немного не при чем.

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта