Было бы проще просто иметь один базовый класс с булевым значением, соответствующим его функции?
Это нарушило бы SOLID принципа называется Open-Closed принципа. Принцип Open-Closed гласит, что компоненты должны быть открыты для расширения, но закрыты для модификации. Если у вас есть один класс TextView
, его нужно будет менять каждый раз, когда вы хотите ввести новое поведение в текстовое представление.
Почему это не лучше, чем дизайн декоратора?
Представьте себе, что пользователи вашего API (которые не имеют доступа к API исходного кода) хотят ввести новое поведение для TextView
класса под названием Поворот на 360 градусов. У них есть два варианта: либо дождаться, когда вы добавите новый BOOL
в базовый класс TextView
и поддержите эту функцию, или выясните способ создания этой функции поверх вашего TextView
. Один из вариантов, с которым они могут пойти, - создать TextViewAdapter
(см. Adapter pattern), что позволит им добавить требуемую функциональность сверх функциональности, которую вы предоставили.
Не было бы лучше, если бы вы предоставили возможность расширить свой API из коробки, а не создавать API, который не расширяется без вашего вмешательства?
Возможно, вам удастся задать этот вопрос в разделе [стекирование программного обеспечения] (http://softwareengineering.stackexchange.com/), хотя я бы знал, что [перекрестная пересылка] (http: //meta.stackexchange .com/questions/64068/is-cross-posting-a-question-on-multiple-stack-exchange-sites-allowed-if-the-qu) неодобрительно. –
@ RicoKahler да, может быть, извините, я новичок в StackOverflow и не знаю, что у них так много разных сайтов. Я мог бы подождать некоторое время и посмотреть, может ли кто-нибудь помочь здесь, или я просто перееду туда. Thx в любом случае –