Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> На сколько актуально использование паттернов, в Delphi 
:(
    Опции темы
Delphist
Дата 16.3.2009, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Угу,хорошо


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
pompei
Дата 16.3.2009, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.9.2007

Репутация: 2
Всего: 6



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

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

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

Ещё - знание паттернов позволяет быстро объяснить то, что вы написали намедни. Также знание паттернов очень полезно при проектировании реализации (но для проектирования самомй системы знание паттернов не нужно).
--------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап.
PM MAIL   Вверх
Rohoss
Дата 17.3.2009, 01:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начальник интернета
***


Профиль
Группа: Завсегдатай
Сообщений: 1308
Регистрация: 9.10.2006
Где: Matrix

Репутация: 4
Всего: 18



А каким образом в таком случае задокументировать паттерн, для многократного использования? И как использовать паттерны, которые уже имеются в среде Delphi?
Если можно, конкретные примеры: вот так используем в проекте, вот так заносим в среду.



--------------------
Файловый менеджер Explorer.Net скачать  video
PM ICQ   Вверх
pompei
Дата 17.3.2009, 05:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.9.2007

Репутация: 2
Всего: 6



Цитата(Rohoss @ 17.3.2009,  01:51)
А каким образом в таком случае задокументировать паттерн, для многократного использования? 

Паттерн не нужно документировать. Паттерн - не программа. Чтобы что-то использовать многократно, нужно, вначале это написать, а потом, например, оформить это в виде библиотеки (.dll, .jar, .so и пр.) и использовать это многократно (а можно просто в исходных кодах использовать многократно).

Цитата(Rohoss @ 17.3.2009,  01:51)
И как использовать паттерны, которые уже имеются в среде Delphi?

Просто создав новый проект и запустив его Вы уже кучу паттернов использовали. 


Цитата(Rohoss @ 17.3.2009,  01:51)
Если можно, конкретные примеры: вот так используем в проекте, вот так заносим в среду.

Например есть задача, в которой пользователь должен вызывать много разных функций в произвольной последовательности. 

Эту задачу можно например решить с помощью паттерна "Консоль" - есть некоторая строка ввода, пользователь вводит команду (которая запускает ту или иную функцию), нажимает Enter - и соответствующая функция выполняется.

Также эту задачу можно решить по другому, например с помощью паттерна "Меню" - пользователь нажимает мышкой в какую-то облать экрана и вылетает список доступных функций, пользователь наводит мышкой на нужную функцию и кликает - функция запускается.

Ну а теперь более "низменные" паттерны:

"Одиночка" (синглтон, singleton) - это всего лишь когда Вы ввели ограничение на количество инстанций данного класса (чтобы количество инстанций == 1). А как Вы это сделали - либо "устно" соблюдаете ограничение, либо воспользовлись какими-нибудь конструкциями языка, на котором пишите, либо воспользовались какой-нибудь библиотекой - суть остаётся прежней.

Когда у какой-то сущьности в программе есть несколько режимов, например при нарезании болванки - есть режим нарезания, и есть режим верификации.
Тогда можно воспользоваться одним из двух паттернов:

"Состояние" (state) - это когда все режимы обслуживаются одним классом, и какой на данный момент режим определяется значением какого-нибудь поля в этом классе, скорей всего тип этого поля будет либо int либо какой-нибудь enum - хотя можно использовать что угодно.

"Стратегия" (strategy) - это когда отличительный функционал какого-нибудь режима выделяется в отдельный класс, т.е. для каждого режима создаётся отдельный класс, притом эти классы должы иметь общий интерфейс использования (некий общий набор методов или реализовывать какой-нибудь интерфейс если позволяет используемый язык программирования). Ну и в общем классе есть ссылка на один из этих классов - если значение ссылки меняется, то какбы меняется и режим.
Достоинство данного подхода программирования (читай паттерна) является то, что исчезают switch-операторы.

* * *

"Фабричный метод" (factory method) - это когда Вы объект создаете не с помощью конструктора, а с помощью некого статистического метода. В Object Pascal-е, как я понимаю, конструкторы оформлены в виде фабричных методов. Поэтому в Object Pascal-е, если Вы создавали хотя-бы один объект, или придумали хотя-бы один класс и использовали его, то Вы уже пользовались фабричным методом.

"Фабрика" (factory) - это класс, который служит для создания объектов других классов. Обычно "фабрика" - "синглтон", хотя это совершенно не обязательно. 

"Строитель" (builder) - это почти тоже самое, что и фабрика. Строитель от фабрики отличается тем, что он создает много объектов (строит иерархию объектов). Ещё одним ярким отличием строителя от фабрики является то, что строитель может создавать объект не сразу, а постепенно - вначале вызываем какой-нибудь инициализирующий метод, потом какие-нибудь настраивающие методы, потом можно воспользоваться методами для получения ссылок на построенные объекты (чтобы наконец воспользоваться этими объектами), ну а потом наверное надо вызвать метод, который все это дело очищает. 
Короче строитель - это супер-пупер навороченная фабрика.

"Конструктор" (constructor) - это конструктор. (тупо зато верно)
"Деструктор" (destructor) - это деструктор. (тупо зато верно)
Практически во всех ООП-языках предыдущие два паттерна встроены прямо в язык.

"Фассад" (fassade) - это наверное самый первый паттерн, который использовали программисты с начала эры информационной революции (когда ещё понятия паттерн и в помине небыло). Фассад - это просто набор функций, для доступа к каким-либо ресурсам.
Например в Java доступ к синусам и косинусам оформлен с помощью фассадного класса Math - в нем куча статических методов типа sin, cos, log, tan и пр.

Ну а остальные паттерны читайте in вумной литературе.


Это сообщение отредактировал(а) pompei - 17.3.2009, 06:48
--------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап.
PM MAIL   Вверх
cemick
Дата 20.3.2009, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 6.7.2006
Где: Санкт-Петербург

Репутация: 2
Всего: 6



В ModelMaker 10  реализовано много шаблонов паттернов, можно применятьдаже к уже существующему коду . Реалиализация вменяемая. Раньше бы некоторые шаблоны было бы влом реализовывать, а тут одно нажатие и готово.
PM MAIL WWW   Вверх
Delphist
Дата 20.3.2009, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Цитата(cemick @  20.3.2009,  15:32 Найти цитируемый пост)
ModelMaker 10

генератор кода хреновый у него, правда юзал ModelMaker (не помню какая у него версия была), который поставлялся с Delphi7. Мож за эти годы что поменялось


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
cemick
Дата 20.3.2009, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 6.7.2006
Где: Санкт-Петербург

Репутация: 2
Всего: 6



Цитата(Delphist @  20.3.2009,  14:46 Найти цитируемый пост)
генератор кода хреновый у него,

Это как это???? 

да и альтернатив для семерки нет

Это сообщение отредактировал(а) cemick - 20.3.2009, 14:58
PM MAIL WWW   Вверх
Delphist
Дата 20.3.2009, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Цитата(cemick @  20.3.2009,  15:57 Найти цитируемый пост)
Это как это???? 

не понравился он мне


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0510 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.