![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Delphist |
|
|||
![]() Delphist Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2145 Регистрация: 3.2.2004 Где: всегда в сети Репутация: 2 Всего: 3 |
Угу,хорошо
-------------------- ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др). Когда-то давным-давно использовал это... |
|||
|
||||
| pompei |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 7.9.2007 Репутация: 2 Всего: 6 |
Вы как-то не правильно относитесь к понятию паттернов. Паттерн - это ни нечто новое, созданное каким-то вумным гением, и теперь если ты крутой чувак, то тоже должен использовать паттерны, а потом хвастаться этим.
Если Вы написали хоть одну программу, то вы уже реализовали какой-нибудь паттерн. Паттерн - это метод решения задачи (в программировании). Паттерны придумали, чтобы систематизировать то, что делают программисты. Ещё - знание паттернов позволяет быстро объяснить то, что вы написали намедни. Также знание паттернов очень полезно при проектировании реализации (но для проектирования самомй системы знание паттернов не нужно). --------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап. |
|||
|
||||
| Rohoss |
|
|||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: 4 Всего: 18 |
А каким образом в таком случае задокументировать паттерн, для многократного использования? И как использовать паттерны, которые уже имеются в среде Delphi?
Если можно, конкретные примеры: вот так используем в проекте, вот так заносим в среду. |
|||
|
||||
| pompei |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 7.9.2007 Репутация: 2 Всего: 6 |
Паттерн не нужно документировать. Паттерн - не программа. Чтобы что-то использовать многократно, нужно, вначале это написать, а потом, например, оформить это в виде библиотеки (.dll, .jar, .so и пр.) и использовать это многократно (а можно просто в исходных кодах использовать многократно).
Просто создав новый проект и запустив его Вы уже кучу паттернов использовали.
Например есть задача, в которой пользователь должен вызывать много разных функций в произвольной последовательности. Эту задачу можно например решить с помощью паттерна "Консоль" - есть некоторая строка ввода, пользователь вводит команду (которая запускает ту или иную функцию), нажимает 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 --------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап. |
||||||
|
|||||||
| cemick |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 416 Регистрация: 6.7.2006 Где: Санкт-Петербург Репутация: 2 Всего: 6 |
В ModelMaker 10 реализовано много шаблонов паттернов, можно применятьдаже к уже существующему коду . Реалиализация вменяемая. Раньше бы некоторые шаблоны было бы влом реализовывать, а тут одно нажатие и готово.
|
|||
|
||||
| Delphist |
|
|||
![]() Delphist Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2145 Регистрация: 3.2.2004 Где: всегда в сети Репутация: 2 Всего: 3 |
генератор кода хреновый у него, правда юзал ModelMaker (не помню какая у него версия была), который поставлялся с Delphi7. Мож за эти годы что поменялось -------------------- ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др). Когда-то давным-давно использовал это... |
|||
|
||||
| cemick |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 416 Регистрация: 6.7.2006 Где: Санкт-Петербург Репутация: 2 Всего: 6 |
||||
|
||||
| Delphist |
|
|||
![]() Delphist Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2145 Регистрация: 3.2.2004 Где: всегда в сети Репутация: 2 Всего: 3 |
-------------------- ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др). Когда-то давным-давно использовал это... |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |