![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Ту тему я буду держать закрытой. Все вопросы, предложения и обсуждение - сюда.
-------------------- |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Прочитал статью про паттерны. Правильно ли я понял, что паттерны - не специфические классы и интерфейсы Java и С#, а просто способ организации собственых классов? То есть, например, Singleton - не класс, реализующий какой-нибудь интерфейс Singletonable (
![]() -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
Domestic Cat |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Их еще многo ![]()
Вот 2 определения паттернов: 1. Паттерн - это набор правил, описывающих как выполнить определенную задачу в разработке ПО. (Прии) 2. Паттерн идентифицирует и определяет абстракцию, которая вышe уровня отдельногo класса или интерфейса (Гамма) Паттерн - это некий способ организации объектов, при котором взаимодействующие объекты знают о внутреннеm устройствe друg другa кak можно меньше. -------------------- |
||||
|
|||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Таким образом, эти термины используются для стандартизации концепций организации программ и облегчения взаимопонимания между разработчиками, да? Т.е. если я говорю, что мой класс является Composite-классом, то мой коллега понимает, что я использую структуру, подобную той, которая приведена тобой в примере.
А где можно найти более полное описание? -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
Domestic Cat |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Помимо этог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 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 3.2.2005 Репутация: нет Всего: 3 |
IMHO, самое главный плюс паттернов они делают код более гибким для дальнейший модификации...
|
|||
|
||||
Wanderer2019 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 937 Регистрация: 3.12.2004 Где: Санкт-Петербург/П рага Репутация: нет Всего: 17 |
вот пишу с использованием DAO! вещь конечно хорошая, но очень много подготовки перед реальным использованием... крму интересно можно почитать здесь Data Access Object
|
|||
|
||||
3,14 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: 6 Всего: 24 |
Вот тут эта книга есть в электронном виде, к тому же на русском : http://techlib.111mb.com/cgi/dl.php?a=0.1&...gn_patterns.tgz -------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
|||
|
||||
Domestic Cat |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Во-первых, речь здесь не об энтерпрайз приложениях, а о J2SE / C# Windows Forms. Во-вторых, тема создана для обсуждения а не для ироничных бессодержательных замечаний. Не нравится изложение - напиши свое или по крайней мере вырази свое мнение в более содержательной форме. В-третьих, зарегистрируйся, т.к. разгваривать с гостем бессмысленное занятие. Иначе я просто буду удалять все твои посты чтоб время на разговоры с неизвестно кем не тратить.
Да, про j2ee паттерны тоже следовало бы написать ![]() -------------------- |
||||
|
|||||
Souljah |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 148 Регистрация: 24.12.2004 Репутация: нет Всего: 7 |
||||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Видимо мне следовало это сразу сказать, но изложение паттернов является сугубо субъективным, кроме того я пользуюсь принципом KISS - Keep It Simple Stupid. На написание новой книжки Гаммы и др. Reloaded у меня времени и таланта нет.
Конечно, Комманд петтерн, Action'ы в Java и пр - все это хорошо, но лично мне не приходилось применять этот паттерн в j2se. -------------------- |
|||
|
||||
NotGonnaGetUs |
|
|||
Unregistered |
Встречался апплет для редактирования html (не как html-текст, а что-то вроде word'a). Там была проблема - жрались ресурсы дико. Стал разбираться, оказалось, для Undo/Redo операций html преобразовавывался из внутреннего формата в String и сохранялся. Затем в обратную сторону, если надо было произвести откат. Внутренний формат - сложно проиндексированный лист с кучей надстроек, для быстрого поиска строк. Заменив все операции модификации внутреннего представления на комманды (по одному классу для каждой операции, класс содержит методы execute() & undo() ), добавив стек для этих комманд, получилось а) уменьшить память потребляемую программой в несколько раз. б) увеличить время отклика на порядки для больших html-ек (> 1мб) в) увеличить глубину ундо/редо - в разы ![]() На основе этого паттерна строятся легко перенастраивамый контролллеры (хотя бы в рамках MVC). Можно прописать в xml'ке соотвествие управляющих действий командам и не пересобирая код, менять поведение системы. В качестве такой системы может выступать юзер интерфейс, логика премещения "таракана" встречающего препятствия, и т.п. ![]() Маверик весь построен на комманд паттерне(правда это j2ee). Несколько сумбурно вышло, но что поделать. Рабочий день кончился, мозг отключается ![]() |
|||
|
||||
djGri |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 21.2.2005 Репутация: 1 Всего: 3 |
2 Domestic Cat
Вопрос про Singleton: 1. Как насчет запрета на clone() ? |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Само собой, подразумевается что класс нe наследует от Cloneable.
-------------------- |
|||
|
||||
Slanix |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 30.1.2004 Репутация: нет Всего: 1 |
Расскажите, плз, так же доступно, о паттерне State Machine.
--------------------
Я буду искать лица Твоего, Господи Пс.26:8 |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Сделано.
-------------------- |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Вопрос насчет паттерна State: паттерном оговаривается, что объекты ConsoleState и FileState (в данном примере) должны быть созданы раз и насвсегда, или их можно создавать и удалять по мере необходимости? (т.е. произошло переключение на консоль - удаляем объект FileState и создаем ConsoleState)
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
NotGonnaGetUs |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 25.2.2005 Где: Москва Репутация: 4 Всего: 12 |
как хочешь - так и будет.
любое изложение паттерна - не является истинной в последней инстанции. это просто пример организации кода, показавшийся кому-то полезным. для примера можешь сравнить различные описания паттерна command (тут и, скажем, на http://ooad.asf.ru/ или любых других местах) ^_^ |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Конечно, не является, но ведь должна быть какая-то грань, за пределами которой считается, что классы не удовлетворяют данному паттерну. А вообще, мне очень понравалась сама концепция. Можно найти много готовых типовых решений. Дело за малым - запомнить и начать применять. Выпишу их себе на стенку ![]() -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Делай так, как тебe удобнее. это лишь пример ![]() -------------------- |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Ok, "куплю и буду"
![]() -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
NotGonnaGetUs |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 25.2.2005 Где: Москва Репутация: 4 Всего: 12 |
||||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Вот такой вопрос. Когда вы используете какой-нибудь паттерн, как вы указываете это в коде - в названии класса, в комментарии, вообще не указываете или еще как?
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Зависит от того, как принято там где ты работаешь. В принципе можно выносить в название класса : EmployeeFactory. В менее очевидных случаях пишу в явадоке.
-------------------- |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Наверное, лучше указывать в названии, понятнее как-то.
Собственно, никак. Там, где я работаю, на Java никто не пишет, и вообще у всех разные проекты. Но это оффтоп ![]() -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
jer1 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 123 Регистрация: 24.1.2005 Где: Харьков Украина Репутация: 4 Всего: 5 |
фабричный метод
пакет: java.text содержит классы для работы с текстом (об этом свидетельствует и название пакета)) так вот там есть абстрактный класс NumberFormat, а у него есть factory- метод возвращающий конкретный экземпляр для конкретной локали (в большинстве случаев, наверное, DecimalFormat) т. е. данный код вполне приемлем
вопрос по семантике: почему не был сделан отдельный класс, к примеру NumberLocaleFormat, c factory-метод getInstance(). А то как-бы смешивается абстрактность и неабстрактность thanks in advance --------------------
:w!q |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
На самом деле NumberFormat.getInstance возвращает объект класса DecimalFormat, который не является абстрактным. Просто он возвращаетшя под видом NumberFormat.
-------------------- |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 1 Всего: 232 |
Имхо, раз рассмотрели паттерн фасад, то нужно привести и описание Mediator.
Кроме того, часто всеми используемый паттерн Observer (aka Publish / Subscribe) также заслуживает упоминания. Ещё маленькое замечание по поводу исходников: мало (практически ноль) комментариев в коде... И ссылочку на известную книгу "банды четырёх" можно было бы привести в начале темы. -------------------- ![]() |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Все собираюсь добавить... -------------------- |
|||
|
||||
jer1 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 123 Регистрация: 24.1.2005 Где: Харьков Украина Репутация: 4 Всего: 5 |
вот наткнулся
идиомы языка java по масштабу и степени повторного использование они мельче паттернов, но зато они ближе к языку в ссылках есть переходы и на паттерны Добавлено @ 12:46 вот наткнулся идиомы языка java по масштабу и степени повторного использование они мельче паттернов, но зато они ближе к языку в ссылках есть переходы и на паттерны Добавлено @ 12:48 2 раз это от жадности ![]() --------------------
:w!q |
|||
|
||||
3,14 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: 6 Всего: 24 |
Хотелось бы про Observer Pattern услышать.
-------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Усе будет, сейчас занят немного
![]() -------------------- |
|||
|
||||
Гость_Levsha |
|
|||
Unregistered |
что такое gof и grasp
|
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
ORM |
|
|||
Unregistered |
Можно ссылку на ТУ тему? |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Опс, а тему то-уже открепили...
Вот она: Паттерны в Java и C# Добавлено @ 23:12 Занесу-ка я ее в FAQ... -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
MrPayne |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 15.11.2006 Где: Татарстан, Н.Ч. Репутация: нет Всего: нет |
А у меня тут такая проблема...можно ли эти паттрены "припаять" к калькулятору написанному на Ява...и как? подскажите пожалуйста...
![]() |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
MrPayne, а тебе зачем?
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
Goliath |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 1.3.2005 Репутация: 1 Всего: 5 |
Это сообщение отредактировал(а) Goliath - 23.11.2006, 12:08 --------------------
Наша жизнь растрачивается на мелочи… Упрощайте, упрощайте. [Генри Торо] |
|||
|
||||
Jubei |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 7.7.2005 Где: Рига,Латвия Репутация: нет Всего: нет |
Наверно это все-таки оффтоп
![]() Советую всем начинающим изучение паттернов почитать книжку, O'Reilly 2004 Head First Design Patterns, правда весит зараза много она (54мб), но мне эта книжка очень понравилась (все написано понятным для чтения языком) |
|||
|
||||
MrPayne |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 15.11.2006 Где: Татарстан, Н.Ч. Репутация: нет Всего: нет |
А мне это нужно для то, что мне дали написать курсовик: калькулятор с применением не менее 10ти паттернов, а лучше 15ти...а я ни в зуб ногой в этих паттернах
![]() |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Сколько??? Да тут больше 3-5 не куда применять. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
MrPayne |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 15.11.2006 Где: Татарстан, Н.Ч. Репутация: нет Всего: нет |
Да мне уже хоть сколько, лишь бы было...сделайте пожалуйста, если можете...мне очень надо...
|
|||
|
||||
powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
У нас есть специальный раздел Центр Помощи. Туда пиши свои мольбы. В данном разделе помогают разобраться, а не пишут за тебя код. |
|||
|
||||
javalove |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 23.12.2005 Где: Hell Репутация: нет Всего: нет |
Народ, я тут почитал про ваши васказывания...
В общем, для нас, новичков, где можно найти e-book.? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |