| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Обсуждение паттернов |
| Автор: Domestic Cat 4.2.2005, 23:06 |
| Ту тему я буду держать закрытой. Все вопросы, предложения и обсуждение - сюда. |
| Автор: batigoal 7.2.2005, 10:53 |
| Прочитал статью про паттерны. Правильно ли я понял, что паттерны - не специфические классы и интерфейсы Java и С#, а просто способ организации собственых классов? То есть, например, Singleton - не класс, реализующий какой-нибудь интерфейс Singletonable ( |
| Автор: Domestic Cat 7.2.2005, 20:27 | ||||
Их еще многo
Вот 2 определения паттернов: 1. Паттерн - это набор правил, описывающих как выполнить определенную задачу в разработке ПО. (Прии) 2. Паттерн идентифицирует и определяет абстракцию, которая вышe уровня отдельногo класса или интерфейса (Гамма) Паттерн - это некий способ организации объектов, при котором взаимодействующие объекты знают о внутреннеm устройствe друg другa кak можно меньше. |
| Автор: batigoal 8.2.2005, 11:47 | ||
Таким образом, эти термины используются для стандартизации концепций организации программ и облегчения взаимопонимания между разработчиками, да? Т.е. если я говорю, что мой класс является Composite-классом, то мой коллега понимает, что я использую структуру, подобную той, которая приведена тобой в примере.
А где можно найти более полное описание? |
| Автор: Domestic Cat 8.2.2005, 18:54 | ||||
Помимо этогo, использованиe паттернов улучшает реюзабилити кода, поддрживаемость, и пр.
В книгах E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns. Elements of Reusable Object-Oriented Software. James W. Cooper, The Design Patterns Java Companion S. Stelting, O.Maasen, Applied Java Patterns еще сотнe других. Ну а я каждый день дополняю тему, есл ты заметил. |
| Автор: borisvolfson 11.2.2005, 00:31 |
| IMHO, самое главный плюс паттернов они делают код более гибким для дальнейший модификации... |
| Автор: Wanderer2019 16.2.2005, 15:09 |
| вот пишу с использованием DAO! вещь конечно хорошая, но очень много подготовки перед реальным использованием... крму интересно можно почитать здесь http://javagu.ru/portal/dt?last=false&provider=javaguru&ArticleId=ARTICLE_64404&SecID=SECTION_63501 |
| Автор: 3,14 18.2.2005, 12:49 | ||
Вот тут эта книга есть в электронном виде, к тому же на русском : http://techlib.111mb.com/cgi/dl.php?a=0.1&m=10224a7a167ebcee&f=design_patterns.tgz |
| Автор: Domestic Cat 18.2.2005, 18:39 | ||||
Во-первых, речь здесь не об энтерпрайз приложениях, а о J2SE / C# Windows Forms. Во-вторых, тема создана для обсуждения а не для ироничных бессодержательных замечаний. Не нравится изложение - напиши свое или по крайней мере вырази свое мнение в более содержательной форме. В-третьих, зарегистрируйся, т.к. разгваривать с гостем бессмысленное занятие. Иначе я просто буду удалять все твои посты чтоб время на разговоры с неизвестно кем не тратить.
Да, про j2ee паттерны тоже следовало бы написать |
| Автор: Souljah 18.2.2005, 19:06 |
| http://ooad.asf.ru/patterns/viewpattlist.asp?cat=0 на русском enjoy |
| Автор: Domestic Cat 18.2.2005, 19:33 |
| Видимо мне следовало это сразу сказать, но изложение паттернов является сугубо субъективным, кроме того я пользуюсь принципом KISS - Keep It Simple Stupid. На написание новой книжки Гаммы и др. Reloaded у меня времени и таланта нет. Конечно, Комманд петтерн, Action'ы в Java и пр - все это хорошо, но лично мне не приходилось применять этот паттерн в j2se. |
| Автор: NotGonnaGetUs 18.2.2005, 21:09 | ||
Встречался апплет для редактирования html (не как html-текст, а что-то вроде word'a). Там была проблема - жрались ресурсы дико. Стал разбираться, оказалось, для Undo/Redo операций html преобразовавывался из внутреннего формата в String и сохранялся. Затем в обратную сторону, если надо было произвести откат. Внутренний формат - сложно проиндексированный лист с кучей надстроек, для быстрого поиска строк. Заменив все операции модификации внутреннего представления на комманды (по одному классу для каждой операции, класс содержит методы execute() & undo() ), добавив стек для этих комманд, получилось а) уменьшить память потребляемую программой в несколько раз. б) увеличить время отклика на порядки для больших html-ек (> 1мб) в) увеличить глубину ундо/редо - в разы На основе этого паттерна строятся легко перенастраивамый контролллеры (хотя бы в рамках MVC). Можно прописать в xml'ке соотвествие управляющих действий командам и не пересобирая код, менять поведение системы. В качестве такой системы может выступать юзер интерфейс, логика премещения "таракана" встречающего препятствия, и т.п. Маверик весь построен на комманд паттерне(правда это j2ee). Несколько сумбурно вышло, но что поделать. Рабочий день кончился, мозг отключается |
| Автор: djGri 21.2.2005, 18:28 |
| 2 Domestic Cat Вопрос про Singleton: 1. Как насчет запрета на clone() ? |
| Автор: Domestic Cat 21.2.2005, 18:50 |
| Само собой, подразумевается что класс нe наследует от Cloneable. |
| Автор: Slanix 28.2.2005, 12:09 |
| Расскажите, плз, так же доступно, о паттерне State Machine. |
| Автор: Domestic Cat 2.3.2005, 06:23 |
| Сделано. |
| Автор: batigoal 2.3.2005, 13:31 |
| Вопрос насчет паттерна State: паттерном оговаривается, что объекты ConsoleState и FileState (в данном примере) должны быть созданы раз и насвсегда, или их можно создавать и удалять по мере необходимости? (т.е. произошло переключение на консоль - удаляем объект FileState и создаем ConsoleState) |
| Автор: NotGonnaGetUs 2.3.2005, 17:03 |
| как хочешь - так и будет. любое изложение паттерна - не является истинной в последней инстанции. это просто пример организации кода, показавшийся кому-то полезным. для примера можешь сравнить различные описания паттерна command (тут и, скажем, на http://ooad.asf.ru/ или любых других местах) ^_^ |
| Автор: batigoal 2.3.2005, 17:16 | ||
Конечно, не является, но ведь должна быть какая-то грань, за пределами которой считается, что классы не удовлетворяют данному паттерну. А вообще, мне очень понравалась сама концепция. Можно найти много готовых типовых решений. Дело за малым - запомнить и начать применять. Выпишу их себе на стенку |
| Автор: Domestic Cat 2.3.2005, 18:41 | ||
Делай так, как тебe удобнее. это лишь пример |
| Автор: batigoal 2.3.2005, 19:18 |
| Ok, "куплю и буду" |
| Автор: NotGonnaGetUs 2.3.2005, 20:51 |
| http://patternshare.org/ наткнулся сегодня. богатое место |
| Автор: batigoal 6.3.2005, 11:58 |
| Вот такой вопрос. Когда вы используете какой-нибудь паттерн, как вы указываете это в коде - в названии класса, в комментарии, вообще не указываете или еще как? |
| Автор: Domestic Cat 6.3.2005, 19:10 |
| Зависит от того, как принято там где ты работаешь. В принципе можно выносить в название класса : EmployeeFactory. В менее очевидных случаях пишу в явадоке. |
| Автор: batigoal 6.3.2005, 22:22 | ||
Наверное, лучше указывать в названии, понятнее как-то.
Собственно, никак. Там, где я работаю, на Java никто не пишет, и вообще у всех разные проекты. Но это оффтоп |
| Автор: jer1 29.3.2005, 14:25 | ||
| фабричный метод пакет: java.text содержит классы для работы с текстом (об этом свидетельствует и название пакета)) так вот там есть абстрактный класс NumberFormat, а у него есть factory- метод возвращающий конкретный экземпляр для конкретной локали (в большинстве случаев, наверное, DecimalFormat) т. е. данный код вполне приемлем
вопрос по семантике: почему не был сделан отдельный класс, к примеру NumberLocaleFormat, c factory-метод getInstance(). А то как-бы смешивается абстрактность и неабстрактность thanks in advance |
| Автор: Domestic Cat 30.3.2005, 04:58 |
| На самом деле NumberFormat.getInstance возвращает объект класса DecimalFormat, который не является абстрактным. Просто он возвращаетшя под видом NumberFormat. |
| Автор: mr.DUDA 4.4.2005, 09:57 |
| Имхо, раз рассмотрели паттерн фасад, то нужно привести и описание Mediator. Кроме того, часто всеми используемый паттерн Observer (aka Publish / Subscribe) также заслуживает упоминания. Ещё маленькое замечание по поводу исходников: мало (практически ноль) комментариев в коде... И ссылочку на известную книгу "банды четырёх" можно было бы привести в начале темы. |
| Автор: Domestic Cat 4.4.2005, 09:59 | ||
Все собираюсь добавить... |
| Автор: jer1 4.4.2005, 12:45 |
| вот наткнулся http://c2.com/cgi/wiki?JavaIdiom по масштабу и степени повторного использование они мельче паттернов, но зато они ближе к языку в ссылках есть переходы и на паттерны Добавлено @ 12:46 вот наткнулся http://c2.com/cgi/wiki?JavaIdiom по масштабу и степени повторного использование они мельче паттернов, но зато они ближе к языку в ссылках есть переходы и на паттерны Добавлено @ 12:48 2 раз это от жадности |
| Автор: 3,14 4.5.2005, 15:52 |
| Хотелось бы про Observer Pattern услышать. |
| Автор: Domestic Cat 4.5.2005, 18:19 |
| Усе будет, сейчас занят немного |
| Автор: Гость_Levsha 5.12.2005, 20:37 |
| что такое gof и grasp |
| Автор: batigoal 5.12.2005, 21:56 |
| http://www.mindspring.com/~mgrand/pattern_synopses2.htm#GRASP%20Patterns http://hillside.net/patterns/DPBook/GOF.html |
| Автор: ORM 8.12.2005, 22:46 | ||
Можно ссылку на ТУ тему? |
| Автор: LSD 8.12.2005, 23:07 | ||
http://forum.vingrad.ru/index.php?showtopic=41784 |
| Автор: batigoal 8.12.2005, 23:10 |
| Опс, а тему то-уже открепили... Вот она: http://forum.vingrad.ru/index.php?showtopic=41784 Добавлено @ 23:12 Занесу-ка я ее в FAQ... |
| Автор: MrPayne 22.11.2006, 22:49 |
| А у меня тут такая проблема...можно ли эти паттрены "припаять" к калькулятору написанному на Ява...и как? подскажите пожалуйста... |
| Автор: batigoal 22.11.2006, 23:36 |
| MrPayne, а тебе зачем? |
| Автор: Goliath 23.11.2006, 12:08 | ||
|
| Автор: Jubei 23.11.2006, 17:50 |
| Наверно это все-таки оффтоп Советую всем начинающим изучение паттернов почитать книжку, O'Reilly 2004 Head First Design Patterns, правда весит зараза много она (54мб), но мне эта книжка очень понравилась (все написано понятным для чтения языком) |
| Автор: MrPayne 23.11.2006, 22:20 |
| А мне это нужно для то, что мне дали написать курсовик: калькулятор с применением не менее 10ти паттернов, а лучше 15ти...а я ни в зуб ногой в этих паттернах |
| Автор: LSD 23.11.2006, 22:23 | ||
Сколько??? Да тут больше 3-5 не куда применять. |
| Автор: MrPayne 24.11.2006, 19:11 |
| Да мне уже хоть сколько, лишь бы было...сделайте пожалуйста, если можете...мне очень надо... |
| Автор: javalove 10.12.2006, 12:00 |
| Народ, я тут почитал про ваши васказывания... В общем, для нас, новичков, где можно найти e-book.? |