пятница, ноября 02, 2007

Как лучше определять свойства класса, предназначенные для потомков и внешнего пользования?

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

  1. Определить как protected и в потомках использовать их напрямую, а для внешнего использования сделать public установщик.
  2. Определить как private, и для потомков и для внешнего использования сделать public установщик.
  3. Определить как public.

Первый способ дает неоднозначность - обращаться к свойству напрямую или через установщика. Однако, обращаясь напрямую, мы имеем дело с переменной, что улучшает производительность.

Второй способ лучше, т.к. сокращает количество путей доступа к свойству, что лучше сказывается на инкапсуляции объекта.

Последний способ применим только для простых конструкций.

* * *

Важно четко понимать, какой способ лучше применить:

  • Очевидное применение первого способа - для абстрактных классов,
  • Второй соответственно в реализациях
  • Третий - для простых конструкций, предназначенных для хранения данных.

Комментариев нет: