У меня есть два файла классов (WallSwitch
и ProximitySwitch
) - давайте предположим, что они являются сторонними компонентами - которые реализуют методы On()
и Off()
из интерфейса IUserController
, который у меня естьвстроенный в мое ядро, потребляющий систему.
У меня также есть три класса - также поставляемые сторонними производителями - а именно, CeilingFan
, Lightbulb
и CCTVCamera
, которые реализуют методы из интерфейса ICeilingComponent
, которая является частью основной системы.Эти ICeilingComponent
реализующие классы создаются и внедряются в наследуемые классы IUserController
, например:
ICeilingComponent component = new LightBulb();
IUserController controller = new WallSwitch(component);
Затем ...
controller.On();
controller.Off();
Все счастливы.
Теперь у меня есть новый сторонний компонент под названием DimmerSwitch
, который также реализует IUserController
Методы On()
и Off()
, но класс DimmerSwitch
дополнительно реализует Методы IncreasePower(int amount)
и DecreasePower(int amount)
, который влияет только на CeilingFan
и (затемняемый) Lightbulb
, а не на CCTVCamera
.
. Я хотел бы разместить это в базовой системе, но мне не удаетсяпонять, как это сделать, не вынуждая другие сторонние компоненты изменять их конструкцию, как описано в интерфейсе, для которого я заключил контракт.Это важный бит.Должен быть способ, которым я могу справиться с этим в основной системе, не затрагивая изменения в другом месте.
Какой шаблон проектирования или методологию интерфейса мне не удалось правильно понять?
Я надеялся, что написание всего этогоДаун каким-то образом представит решение для меня.Но нет.Может быть, я сейчас не вижу дрова для деревьев.Искал то, что я думал, будет правильным термином.Это должно быть общая проблема, конечно.Не стесняйтесь заставлять меня выглядеть глупым.
PS Это явно не реальная проблема - я, конечно, не хочу поощрять дискуссии о напряжении.Но это тоже не домашнее задание: я бы только хотел быть таким молодым.Я просто пытаюсь разобраться с этой проблемой, чтобы облегчить понимание.Любые ответы приветствуются (кроме любых вопросов, касающихся электрического заряда).