Форум: "Потрепаться";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];
ВнизПаттерны. Найти похожие ветки
← →
Тимохов © (2004-06-10 14:13) [0]Меня тут в соседней конфе метилческий вентилятор навел на мысль, что не плохо бы паттерны знать - без них я не программист, а что болотное (это шутка).
Примеры книг мне приводили.
Все же хотелось бы узнать, где можно почитать о паттернах в доступной форме в электронном виде?
Заранее спасибо.
← →
Игорь Шевченко © (2004-06-10 14:22) [1]Тимохов © (10.06.04 14:13)
Например: http://firststeps.narod.ru/theory/pattern/1.html
Кроме того, Яндекс по запросы "паттерны проектирования" выдал 1056 серверов и 24198 страниц :)
← →
vuk © (2004-06-10 14:27) [2]to Тимохов © (10.06.04 14:13):
>без них я не программист, а что болотное
Ну... Я бы не сказал. По большей части паттерны - это формализация опыта програмирования в некоторых стандартных ситуациях. Знать об их существовании полезно, но говорить, что без них никуда по меньшей мере не верно.
← →
Тимохов © (2004-06-10 15:31) [3]
> vuk © (10.06.04 14:27) [2]
да понимаю я (про чмо болотное шутка была :))).
Но все же о них много говорят. Хочу понять есть ли в этом смысл для программиста, который может и не шибко эрудирован (в смысле широты позниний), но волею судеб 10 лет одновременно с программирование занимался и проектированием.
> Игорь Шевченко © (10.06.04 14:22) [1]
Спасибо.
К сожалению интернет помойка (имхо). Может, кроме форумов :)))
К его услугам в области поиска документации я прибегаю только в крайнем случае. Это связано с тем, что считанные разы я находил ответ на свой вопрос...
"Не люблю кошек"
"Может ты не умеешь их готовить" (с) реклама "m. new"
← →
Игорь Шевченко © (2004-06-10 15:36) [4]Тимохов © (10.06.04 15:31)
Яндекс еще выдает очень много ссылок на интернет-магазины, где классическую книжку (Гамма, Влиссидес, Джонсон, Хэлм) можно купить. Это так, намек... :)
← →
Тимохов © (2004-06-10 15:39) [5]
> Игорь Шевченко © (10.06.04 15:36) [4]
она у меня в электронном виде есть (на eng).
последнее не проблема, когда понимаешь принципиально о чем речь.
например Феня читать на англ. не проблема, т.к. знаешь - про windows.
а вот с указанной вами книгой сложнее - т.к. нужно понимать не только семнатику, но и терминологию...
← →
Игорь Шевченко © (2004-06-10 15:42) [6]Тимохов © (10.06.04 15:39)
Я серьезные книжки предпочитаю на русском читать, но это уже оффтопик :)
← →
Тимохов © (2004-06-10 15:45) [7]
> Игорь Шевченко © (10.06.04 15:42) [6]
спасибо за ссылку, кстати.
Доступно.
Только не совсем помню UML-обозначений, но вроде книга по UML помогает.
← →
Тимохов © (2004-06-10 15:50) [8]
> Игорь Шевченко © (10.06.04 15:42) [6]
Вот кстати.
Паттерн Abstract Factory (http://firststeps.narod.ru/theory/pattern/2.html).
И зачем она нужна программисту на Delphi, у которого есть виртуальные конструкторы?
Это не сарказм. Просто интересно знать ваше мнение для того, чтобы направить знание паттернов в правильное русло. Т.е. как мне знание этого паттерна поможет лучше писать на delphi.
← →
vuk © (2004-06-10 15:52) [9]to Тимохов © (10.06.04 15:50) [8]:
>И зачем она нужна программисту на Delphi, у которого есть
>виртуальные конструкторы?
Ну, например, для понимания идеологии COM неплохо подходит. :o)
← →
Игорь Шевченко © (2004-06-10 16:23) [10]Тимохов © (10.06.04 15:50)
> Паттерн Abstract Factory (http://firststeps.narod.ru/theory/pattern/2.html).
> И зачем она нужна программисту на Delphi, у которого есть
> виртуальные конструкторы?
Пример - вывод результата декомпиляции программы на двух языках.
type
{ Абстрактные классы }
TCodeOutputStyler = class
....
end;
TCommentOutputStyler = class
....
end;
TOutputStylerFactory = class
public
function CreateCodeOutputStyler: TCodeOutputStyler; virtual; abstract;
function CreateCommentOutputStyler: TCommentOutputStyler; virtual; abstract;
end;
{ Конкретные классы }
TCCodeOutputStyler = class(TCodeOutputStyler)
...
end;
TPascalCodeOutputStyler = class(TCodeOutputStyler)
...
end;
TCCommentOutputStyler = class(TCommentOutputStyler)
...
end;
TPascalCommentOutputStyler = class(TCommentOutputStyler)
...
end;
TCOutputStylerFactory = class(TOutputStylerFactory)
public
function CreateCodeOutputStyler: TCodeOutputStyler; override;
function CreateCommentOutputStyler: TCommentOutputStyler; override;
end;
TPascalOutputStylerFactory = class(TOutputStylerFactory)
public
function CreateCodeOutputStyler: TCodeOutputStyler; override;
function CreateCommentOutputStyler: TCommentOutputStyler; override;
end;
.........
function TCOutputStylerFactory.CreateCodeOutputStyler: TCodeOutputStyler;
begin
Result := TCCodeOutputStyler.Create;
end;
function TCOutputStylerFactory.CreateCommentOutputStyler: TCommentOutputStyler;
begin
Result := TCCommentOutputStyler.Create;
end;
function TPascalOutputStylerFactory.CreateCodeOutputStyler: TCodeOutputStyler;
begin
Result := TPascalCodeOutputStyler.Create;
end;
function TPascalOutputStylerFactory.CreateCommentOutputStyler: TCommentOutputStyler;
begin
Result := TPascalCommentOutputStyler.Create;
end;
var
OutputStylerFactory: TOutputStylerFactory;
......
if OutputStyle = osPascal then
OutputStylerFactory := TPascalOutputStylerFactory.Create
else if OutputStyle = osC then
OutputStylerFactory := TCOutputStylerFactory.Create
Таким образом можно добавить поддержку вывода в стиле неограниченного количества языков, дописыва каждый раз только конкретную реализацию стиля вывода для каждого языка.
← →
Тимохов © (2004-06-10 16:44) [11]
> Игорь Шевченко © (10.06.04 16:23) [10]
Спасибо за пример.
Но, думаю, вы согласитесь с тем, что в Дельфи это можно сделать не менее элегантно с помощью конструкции class of TSomeClass + virtual constructor.
...
Я тут подумал, что именно приведеный вами код можно сделать через class of. А вот если бы реализации в методах CreateCodeOutputStyler и CreateCommentOutputStyler были чуть сложнее для разных языков (и главное разными!), тогда через class of было бы не все так красиво.
...
Еще раз спасибо - буду размышлять.
← →
Игорь Шевченко © (2004-06-10 16:51) [12]Тимохов © (10.06.04 16:44)
> Но, думаю, вы согласитесь с тем, что в Дельфи это можно
> сделать не менее элегантно с помощью конструкции class of
> TSomeClass + virtual constructor.
Можно было бы сделать, если бы каждая фабрика возвращала бы только один класс, но фабрика обычно возвращает набор классов, поэтому, по моему мнению, виртуальные конструкторы теряют свое преимущество, и код становится более громоздким.
← →
Тимохов © (2004-06-10 18:42) [13]
> Можно было бы сделать, если бы каждая фабрика возвращала
> бы только один класс, но фабрика обычно возвращает набор
> классов, поэтому, по моему мнению, виртуальные конструкторы
> теряют свое преимущество, и код становится более громоздким.
ну в общем то я уже с этим согласился...
Но все-таки не будете вы отрицать, что многие паттерны являются прямыми следсвиями некоторых особеностей сей?
← →
iZEN © (2004-06-10 19:25) [14]Смотреть здесь:
ftp://195.161.102.62/pub/books/rup/
← →
iZEN © (2004-06-10 19:43) [15]Немного промахнулся...
Вот оно:
ftp://195.161.102.62/pub/books/softwaredevelopment/
← →
LMD © (2004-06-10 20:24) [16]Тимохов © (10.06.04 18:42)
> Но все-таки не будете вы отрицать, что многие паттерны являются
> прямыми следсвиями некоторых особеностей сей?
Вообще-то и буду отрицать и не буду одновременно. Не буду, потому что большая часть программного обеспечения была есть и будет написана на С(++), и, следовательно, удачные решения будут собираться на основе этих приложений. Буду отрицать, потому что паттерны универсальны по своей природе и не привязаны к средствам какого-то определенного языка.
← →
iZEN © (2004-06-10 20:37) [17]Программные паттерны впервые "заметили" в SmallTalk, если не ошибаюсь, потом их "перенесли" на Java и C++, оттуда естественным образом перекочевали в C#.
← →
Игорь Шевченко © (2004-06-10 21:21) [18]iZEN © (10.06.04 20:37)
Паттерны заметили в архитектуре (не программной, а строительной :)
"Хотя, строго говоря, паттерны используются в проектированииЮ они основаны на практических решениях, реализованных в основных языках объектно-ориентированного программирования типа Smalltalk и C++, а не на процедурных (Pascal, C, Ada и т.п.) или объектно-ориентированных языках с динамической типизацией (CLOS, Dylan, Self). Мы выбрали Smalltalk и C++ из прагматических соображений, поскольку чаще всего работаем с ними и поскольку они завоевывают все большую популярность".
(с) Банда четырех
Написано это в 1994-м году, насколько мне известно.
← →
iZEN © (2004-06-10 22:01) [19]to Игорь Шевченко © (10.06.04 21:21) [18].
В строительной архитектуре паттерны впервые описал Кристофер Александер (Christopher Alexander) в "A Pattern Language", Oxford University Press, 1977.
Так, для большей эрудиции.
← →
Тимохов © (2004-06-11 12:01) [20]
> iZEN © (10.06.04 19:43) [15]
еще бы понять какой пользователь и пароль.
> LMD © (10.06.04 20:24) [16]
Дочитал вчера ссылку Игоря Шевченко.
По сему появилось некое аргументированное мнение на фразу
> потому что паттерны универсальны по своей природе и не привязаны к средствам какого-то определенного языка.
да они конечно универсальны, но они в то же время и банальны - все что я (пока) прочел ясно и без паттернов - в том или ином виде использовалось мной. Поэтому у меня появилось ощущение, что смысл паттернов не в том, чтобы действительно помочь в проектировании (опытному человеку и так имхо интуитивно все ясно), а в том, чтобы дать возможность группе проетировщиков и программистов говорить на одном стандартизованном языке. Ну это имхо, конечно. Интересно было бы знать ваше мнение.
← →
Игорь Шевченко © (2004-06-11 12:04) [21]Тимохов © (11.06.04 12:01)
> да они конечно универсальны, но они в то же время и банальны
> - все что я (пока) прочел ясно и без паттернов - в том или
> ином виде использовалось мной
Вызывает уважение, однако.
> Поэтому у меня появилось ощущение, что смысл паттернов не
> в том, чтобы действительно помочь в проектировании (опытному
> человеку и так имхо интуитивно все ясно),
Смысл паттернов - избежать изобретения велосипеда.
> в том, чтобы дать возможность группе проетировщиков и программистов
> говорить на одном стандартизованном языке
И это тоже безусловно важно.
← →
Тимохов © (2004-06-11 12:11) [22]
> Игорь Шевченко © (11.06.04 12:04) [21]
> Вызывает уважение, однако.
не надо сарказма, аднака:))
действительно многое узнал из своего проектика.
← →
Игорь Шевченко © (2004-06-11 12:14) [23]Тимохов © (11.06.04 12:11)
Мне эта...специально помечать фразы, где нет сарказма ?
← →
Тимохов © (2004-06-11 12:18) [24]
> Мне эта...специально помечать фразы, где нет сарказма ?
если не затруднит через "//" :)))
пойду дальше размышлять - ведь не зря наверное люди такие толстые книжки пишут :)))
← →
Игорь Шевченко © (2004-06-11 12:26) [25]
> ведь не зря наверное люди такие толстые книжки пишут
- Вы знаете, кто создал теорию относительности ?
- Эйнштейн, сэр!
- А что послужило причиной к созданию теории относительности ?
- Заработать хотелось, сэр!
(с) Всадники ниоткуда
← →
Тимохов © (2004-06-11 12:30) [26]
> Игорь Шевченко © (11.06.04 12:26) [25]
примерно так я пока думаю, надеюсь, что ошибаюсь:))
← →
Sandman25 © (2004-06-11 16:50) [27]http://ooad.asf.ru/patterns/viewpattlist.asp?cat=0
правда, на английском. Но очень полезно.
← →
Sandman25 © (2004-06-11 16:52) [28]Упс, не на английском. Давно читал, уже забыл, на каком языке.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.032 c