Технологии

Различные права доступа при инкапсуляции. - вопрос №663888

Приветствую! Вопрос состоит в следующем. Допустим имеется некоторый класс SomeClass. Который реализует два метода — ShowList();  и AddElement(Element e); (ShowList — отображает на экран некоторый список. AddElement — добавляет новый элемент в конец списка). Я не конкретизирую в какой части класса объявлены эти методы — private/public/protected. Теперь допустим есть Некоторый класс SystemClass — который должен иметь возможность вызывать оба этихметода. И есть некоторый класс UserClass — который должен иметь возможность показывать на экран список, но не должен иметь возможности добавлять в него новые элементы. Если необходимо — можно предположить что класс SystemClass и SomeClass — реализуют некоторую библиотеку, которую подключают в другом проекте, и используют UserClass — ом. Внимание вопрос: Каким образом ( с использованием каких приемов ооп, паттернов проектирования, классов и структур данных) можно реализовать необходимую функциональность, кроме того, максимально обособив все три класса друг от друга, так, что-бы изменения в SystemClass и в SomeClass — не требовали перекомпиляции кода класса UserClass, кроме того, изменения в SomeClass не затрагивали код в UserClass, и наоборт — Изменения в UserClass не затрагивали код в SomeClass. Под изменениями подразумевается добавление нового функционала, изменение функционирование текущих методов. Кроме перечисленных 3х классов и их свойств, на систему не накладывается никаких ограничений по созданию любых структур данных, классов, интерфейсов. Буду рад конструктивному ответу с обоснованной позицией, наглядно показывающей красоту и изящество решения.

июнь 17, 2013 г.

  • Всего ответов: 1

  • Сергей - аватарка

    Сергей

    9-й в Технологиях

    через интерфейсы и механизм множественного наследования можно:

    есть 2 интерфейса — addable и showable в каждом из которых абстрактное описание соответствующей ф-и.

    Класс SomeClass наследуется (реализует) оба этих интерфейса.

    Класс SystemClass наследуется от SomeClass

    Класс UserClass — Только от showable

    июнь 17, 2013 г.

Похожие вопросы