Предположим, мне нужна группа классов для реализации все методы X, Y и Z для правильной работы. В этом случае я могу позволить им реализовать общий интерфейс, чтобы заставить это.Форсировать классы для реализации одного из множества методов
Теперь мой случай немного отличается - моим классам необходимо реализовать хотя бы один из X, Y и Z, не обязательно все из них. Интерфейсы мне не помогают. Самое близкое, о чем я могу думать, - это общий родитель - он может проверить существование X, Y или Z в своем конструировании.
Я предпочел бы избежать наследования здесь, потому что мне может понадобиться реализовать этот «интерфейс» в классе, у которого уже есть родитель. Итак - есть ли еще один элегантный способ сделать это?
(я работаю в PHP, но если общее OOP решение существует, оно может служить для более широкой аудитории.)
Интерфейсы могут вам помочь. Имеют ли эти интерфейсы общий интерфейс. Dunno, как вы ожидаете сделать это без наследования, если вы не хотите проверять, какой из них он каждый раз. –
Звучит как плохая архитектура/дизайн. Не могли бы вы объяснить (показать нам реальный мир), почему вам нужно «реализовать хотя бы один из X, Y, Z»? –
@WaxCage У нас есть классы для доступа к значениям конфигурации. Некоторые могут извлекать их из БД, другой из файлов конфигурации, другой из жестко закодированных массивов внутри них. Вы можете получить значение из такого класса getAsString(), getAsParamObject() ... или некоторые аналогичные методы. Это определенно плохой дизайн, но это тот, с которым мне приходится работать сейчас. Эти классы конфигурации часто изменяются (и разбиваются), поэтому я хочу обеспечить их основные функции (чтобы получить значение хотя бы как-то), прежде чем реорганизовать все это. –