109. Приемы использования пространства имен Namespace

В статье Пространство имен namespace мы научились использовать пространства имен в коде ActionScript 3.0. Там же приводится описание того, что это такое и зачем оно нужно. В этой статье я хочу показать вам еще один интересный примем использования пространства имен. Рассмотрим пример создания модели PlayerModel в вашем приложении. Это класс-модель, который содержит в себе определенные свойства игрока, такие как:

  • id – идентификационный номер
  • name – имя
  • gender – пол
  • и другие…

Выше приведены свойства, которые никогда в приложении меняться не будут. Логично было бы определить их как read-only, т.е. делаем метод getter для получения значения, без возможности изменить его. Но как инициализировать эти свойства в момент создания объекта? Как вариант можно передать их в конструкторе класса. А что если таких свойств много? Писать конструктор который принимает кучу параметров не очень удобно. В этом случае можно воспользоваться пространством имен, которое позволяет изменить свойство только в определенном классе(пакете), и изменение не доступно в остальной части приложения. Я не буду приводить доводы в пользу использования конструктора или namespace, цель статьи – показать один из возможных вариантов, а как писать – каждый решает для себя сам.

Все что нам нужно, это определить закрытые свойства собственным неймспейсом, и заполнять эти свойства в классе-парсере, который получает на входе например xml-строку. Первым делом создадим каталог model/, и собственный namespace с именем modelNS в этом каталоге:

Обратите внимание, что мы определили собственное пространство имен как internal, это значит что использовать его написав use namespace modelNS; можно только внутри пакета model/.


Модель персонажа:

В этом классе мы определили сеттеры в собственном пространстве имен modelNS, а геттеры объявили как public.


Класс-парсер, для наполнения класса PlayerModel из xml-строки:

В парсере мы используем собственное пространство имен и заполняем переменные с его помощью. Так же здесь мы использовали библиотеку FPXml для перевода xml строки в Object. Скачать библиотеку FPXml и ознакомиться с документацией вы можете в разделе Библиотеки SWC.


Ну и собственно главный класс приложения:

В этом классе вы не сможете обратится к сеттеру всех свойств класса PlayerModel, т.к. они определены в пространстве имен modelNS, более того вы не сможете использовать это пространство имен написав use namespace modelNS;, т.к. оно объявлено как internal и доступно только внутри пакета model. В итоге вы получили класс PlayerModel, у которого все свойства read-only.

Да прeбудет с вами Flash.
Serious Sam
Эту статью прочитали 1521 раз

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

Присоединяйтесь к нам в социальных сетях: ВКонтакте , Twitter и Facebook
Понравилась статья? Буду благодарен если вы поделитесь ссылкой с друзьями:


Комментарии ВКонтакте:




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




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