Последствия использования определенного проекта указываются в описании типового проекта. Вместо того чтобы анализировать возможные осложнения, которые может вызвать использование определенного алгоритма, или, что еще хуже, обнаружить, что алгоритм, который был запрограммирован, совсем не подходит для решения стоящей перед вами задачи, - обратитесь к описанию типового проекта. Реализация решения из типового проекта поможет вам определить сложность решения, его ограничения и накладные расходы, необходимые для решения.
Решения, приведенные в типовых проектах, эффективны с точки зрения снижения затрат времени на разработку и исследование. Вы просто пользуетесь опытом и умением других людей для работы над вашим проектом, причем совершенно бесплатно.
Если у вас имеется опыт создания больших приложений, вполне возможно, что вы легко сможете рассмотреть аналогии между некоторыми используемыми вами алгоритмами и алгоритмами, описанными в конкретных типовых проектах. В этом нет никакой случайности - типовые проекты призваны решать периодически возникающие реальные проблемы. Вполне возможно, что после досконального изучения определенной проблемы будет найдено решение, во многом аналогичное решению, описанному в типовом проекте. Знание проблематики типовых проектов позволяет по крайней мере сэкономить какое-то время, необходимое для разработки.
В данной главе не преследуется цель дать полное описание проблематики типового проектирования, в ней лишь рассказывается о наиболее популярных из них и приводятся примеры реализации PHP-кода. Если вы хотите больше узнать о типовых проектах, обязательно прочитайте упоминавшуюся книгу, написанную "бандой четырех". Другой не менее интересной книгой, посвященной этой тематике, является книга Крэга Лармана (Craig Larman) Применение UML и шаблонов проектирования, 2-е издание, опубликованная в Издательском доме "Вильямс".
29.2. Проект Singleton
Типовой проект Singleton полезен при создании объекта, который будет доступным для различных частей вашего приложения, особенно если этот объект должен содержать большие цепочки информации и если вызов этого объекта снова и снова может оказаться очень неэффективным. Вместо этого существует способ разделить один и тот же экземпляр между различными частями приложения. Конечно, первое, что приходит при этом на ум, - это глобальные переменные, но их потребуется предварительно инициализировать, т.е. необходимо быть полностью уверенным в том, что никто по ошибке не сотрет их, не инициирует другой экземпляр класса и т.д. Возложить на программный код реализацию этой стратегии не даст осуществить объектно-ориентированный подход. При объектно-ориентированном проектировании потребуется создать собственный класс, чтобы реализовать API-интерфейс, и возложить решение этих проблем на класс, а не обеспечивать целостность системы на каждом метре программного кода.
На рис. 29.1 показана структура реализации проекта Singleton в PHP.
Анализируя этот класс, необходимо подчеркнуть три ключевых момента: частное статическое свойство, хранящее один экземпляр; частное статическое свойство, которое возвращает один экземпляр, и частный конструктор.
Частное статическое свойство хранит одну реализацию класса. Как упоминалось ранее в описании свойств статического класса, статические переменные подобны глобальным переменным. В этом случае, однако, мы извлекаем выгоду из того, чтобы сделать наше свойство частным, предотвращая тем самым чтение или модификацию его прикладным кодом.
Публичный статический метод возвращает единственную реализацию класса. Эта единственная точка входа позволяет инициализировать переменную точно один раз перед тем, как приложение получит к нему доступ. Благодаря ее статичности нет необходимости в реализации этого объекта перед вызовом данного метода.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Типовые проекты. Часть Вторая.
22-07-2015
<< Предыдущая статья | Следующая статья >> |
PHP. Типовые проекты | PHP. Типовые проекты. Часть Третья. |