как композицию - поведение реализуется как декорация, только без выделенного декоратора1) Как на UML отображать эти отношения? Как зависимость от того каждого конкретного класса? Или как композицию объектов поведения?
да2) Вот тот набор поведений, определенный внутри behaviors() - это место как раз подверженное большим изменениям, и есть же принцип ООП - "Инкапсулировать то что меняется" ,но тут оно жестко хардкодиться в этом же классе
да, специально нарушен, клепать простые сайты так удобнее3) Что с методом Open Closed, нарушен же? Должны мол быть закрыты для модификации, но тут видно что для изменения дополнит. поведения класса ArticleSettings надо менять именно его код , метод behaviors().
для начала определи что конкретно тебе мешает, тогда понятно будет как исправлять.4) Если в 3) ответ положительный, то что если в системе убрать жесткую зависимость от ArticleSettings, так что вместо нее всегда можно подставить подкласс, а в подклассе уже переопределять behaviors(), таким образом можно поправить ситуацию?
чем конкретно тебе в твоей задаче мешает хардкод имен поведений?
они создавались задолго до появления трейтов и замыканий в php, щас бы их не делали«Behavior нужен, потому что так требует Yii. А так не нужен, конечно».
Последнее редактирование: