Почему важна степень видимости методов и атрибутов? - PullRequest
43 голосов
/ 12 сентября 2011

Почему бы не оставить все методы и атрибуты доступными откуда угодно (т.е. public)?

Можете ли вы привести пример проблемы, с которой я могу столкнуться, если объявлю атрибут как public?

Ответы [ 12 ]

1 голос
/ 16 сентября 2011

Видимость - это просто то, что вы можете использовать для своего блага , чтобы помочь вам не нарушать свой собственный код.И если вы используете это правильно, вы поможете другим (которые используют ваш код), которые не нарушают свой собственный код (не используя ваш код правильно).

Самый простой, широко известный пример, в моемМнение Синглтон.Это шаблон, потому что это общая проблема.(Определение шаблона из Википедии:

- это формальный способ документирования решения проблемы проектирования

Определение шаблона Singleton в Википедии:

В разработке программного обеспечения шаблон синглтона является шаблоном проектирования, используемым для реализации математической концепции синглтона путем ограничения создания экземпляра класса одним объектом. Это полезно, когда для координации действий через объект требуется ровно один объект.system.

http://en.wikipedia.org/wiki/Singleton_pattern

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

1 голос
/ 13 сентября 2011

Единственная проблема, с которой вы можете столкнуться, состоит в том, что люди увидят вас как «не крутого», если вы не используете Личный или Защищенный или Абстрактный статический финальный интерфейс или что угодно.Эти вещи похожи на дизайнерскую одежду или гаджеты Apple - люди покупают их не потому, что им нужно, а просто чтобы не отставать от других.

Да, инкапсуляция является важной теоретической концепцией, но в практике «частной» идрузья редко имеют смысл.Они могут иметь некоторый смысл в Java или C #, но в языке сценариев, таком как PHP, использование «private» или «protected» совершенно глупо, потому что инкапсуляция изобретена для проверки компилятором, который не делаетсуществуют в PHP. Подробнее .

См. Также этот превосходный ответ и комментарии @troelskn и @mario над здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...