• Как задать свойства нескольким объектам разных классов через 1 метод?

    @kolya7k
    Тут принципиально важно сначала определиться с двумя вещами:
    1) Известны ли все экземпляры классов, которым нужно сообщать о смене языка или их много и они создаются из самых разных мест?
    2) Как часто меняется язык, насколько велика сложность его «узнавания» и как работают с языком те классы.

    Соотвественно, как варианты, которыми можно решить задачу:
    1) Трейты (как вариант множественного наследованиях), на мой взгляд неочевидно и сложно, не переносимо.
    2) Наследование от класса Localized, если можно логично встроить в цепочку наследования и код установки языка для каждого класса-наследника похожий.
    3) Интерфейсы, если наследование невозможно ИЛИ код/логика установки языка отличается для разных классов.
    4) Callback-функции, каждый класс, которому нужна информация о смене языка может в конструкторе регистрировать Callback в менеджере языков, а в деструкторе - удалять.
    5) Обновление статической переменной в классе-менеджере языков и просто использование её в классах, которым нужен язык.
    Ответ написан
    Комментировать