НИ+ ngplus.games

Применение принципов ООП

140 слов 1 tags

Инкапсуляция

Класс должен работать как черный ящик: принимать команды и запросы, отдавать данные.

Вся работа с данными и логика этой работы содержатся внутри класса и не должны быть подвержены изменениям извне, должны быть скрыты.

  1. Если переменная должна быть доступна для чтения, следует использовать модификатор readonly для исключения ее изменения извне.
  2. Если переменная должна быть доступна для изменения, она должна быть оформлена как свойство с валидацией сеттера, чтобы работа класса не могла быть сломана передачей пограничных значений.
    1. В сеттере может быть не только валидатор значения переменной, но и события и т.п.
  3. Публичный метод для изменения переменной должен включать в себя всю логику работы в рамках ответственности данного класса.
  4. Если другой объект не должен иметь доступа к публичным методам данного объекта, а только к некоторым его полям или свойствам, вероятно, будет удобнее оформить такое взаимодействие через события при изменении значения свойства.

#программирование