Ufomaster Опубликовано 21 октября, 2016 Поделиться Опубликовано 21 октября, 2016 Не работает автоматически с генерированный паттерн наблюдатель, приходится его изменять. Это баг или его нужно как-то по другому инициировать? Можно ли как то поменять шаблон автогенерации? Цитата Ссылка на комментарий
0 Error Опубликовано 22 октября, 2016 Поделиться Опубликовано 22 октября, 2016 А как вы его генерируете ? Цитата Ссылка на комментарий
0 Ufomaster Опубликовано 22 октября, 2016 Автор Поделиться Опубликовано 22 октября, 2016 1 час назад, Error сказал: А как вы его генерируете ? cs:=TConcreteSubject.Create; co:= TConcreteObserver.Create; cs.Attach(co); cs.NotifyObservers; cs.Free; Цитата Ссылка на комментарий
0 Error Опубликовано 22 октября, 2016 Поделиться Опубликовано 22 октября, 2016 4 часа назад, Ufomaster сказал: cs:=TConcreteSubject.Create; co:= TConcreteObserver.Create; cs.Attach(co); cs.NotifyObservers; cs.Free; Я имею ввиду как сам класс получили Цитата Ссылка на комментарий
0 Ufomaster Опубликовано 22 октября, 2016 Автор Поделиться Опубликовано 22 октября, 2016 38 минут назад, Error сказал: Я имею ввиду как сам класс получили На панели модел вьюв - грейт бай паттерн- обсервер Цитата Ссылка на комментарий
0 Pax Beach Опубликовано 22 октября, 2016 Поделиться Опубликовано 22 октября, 2016 Расскажите, какие цели планируете достигнуть при помощи обсервера? Цитата Ссылка на комментарий
0 Ufomaster Опубликовано 22 октября, 2016 Автор Поделиться Опубликовано 22 октября, 2016 17 минут назад, Pax Beach сказал: Расскажите, какие цели планируете достигнуть при помощи обсервера? Изучаю паттерны. Меня интересует почему рабочий паттерн отличается от того который среда генерирует по умолчанию. Цитата Ссылка на комментарий
0 Error Опубликовано 22 октября, 2016 Поделиться Опубликовано 22 октября, 2016 (изменено) 1 час назад, Ufomaster сказал: Изучаю паттерны. Меня интересует почему рабочий паттерн отличается от того который среда генерирует по умолчанию. Я бы не пользовался данной функцией генерации паттернов, судя по тому что TList здесь создается не дженериковый, а обычный, функционал этот довольно заброшен. А уж отсутствию(!) у TSubject удаления созданного им TList это еще и говнокод. IObserver = interface procedure Update(ASubject: TSubject); end; TSubject = class strict private FObservers: TList; public constructor Create; procedure Attach(AObserver: IObserver); procedure Detach(AObserver: IObserver); strict protected procedure NotifyObservers; end; TConcreteSubject = class(TSubject) end; TConcreteObserver = class(TInterfacedObject, IObserver) public procedure Update(ASubject: TSubject); end; constructor TSubject.Create; begin inherited Create; FObservers := TList.Create; end; procedure TSubject.Attach(AObserver: IObserver); begin FObservers.Add(@AObserver); end; procedure TSubject.Detach(AObserver: IObserver); var idx: Integer; begin idx := FObservers.IndexOf(@AObserver); If idx <> -1 Then begin FObservers.Delete(idx); end; end; procedure TSubject.NotifyObservers; var Current: ^IObserver; begin for Current in FObservers do begin Current.Update(self); end; end; procedure TConcreteObserver.Update(ASubject: TSubject); begin // put your code here end; Изменено 22 октября, 2016 пользователем Error добавил сгенерированный код Цитата Ссылка на комментарий
0 Ufomaster Опубликовано 22 октября, 2016 Автор Поделиться Опубликовано 22 октября, 2016 (изменено) 1 час назад, Error сказал: Я бы не пользовался данной функцией генерации паттернов, судя по тому что TList здесь создается не дженериковый, а обычный, функционал этот довольно заброшен. А уж отсутствию(!) у TSubject удаления созданного им TList это еще и говнокод. а как этот или можно еще лучше https://github.com/jimmckeeth/DelphiPatterns/blob/master/Behavioral.Observer/Pattern.pas Изменено 22 октября, 2016 пользователем Andrey Efimov Убрал излишнее цитирование Цитата Ссылка на комментарий
0 Error Опубликовано 22 октября, 2016 Поделиться Опубликовано 22 октября, 2016 3 минуты назад, Ufomaster сказал: а как этот или можно еще лучше https://github.com/jimmckeeth/DelphiPatterns/blob/master/Behavioral.Observer/Pattern.pas На мой взгляд - там все хорошо, и нет утечки памяти Цитата Ссылка на комментарий
0 Ufomaster Опубликовано 22 октября, 2016 Автор Поделиться Опубликовано 22 октября, 2016 (изменено) A подскажите примет MVC шаблона Изменено 22 октября, 2016 пользователем Ufomaster Цитата Ссылка на комментарий
0 Error Опубликовано 22 октября, 2016 Поделиться Опубликовано 22 октября, 2016 1 минуту назад, Ufomaster сказал: A подскажите примет MVC шаблона https://habrahabr.ru/search/?q=delphi+mvc#h Правда чистый MVC в VCL не выйдет\не целесообразен. Цитата Ссылка на комментарий
Вопрос
Ufomaster
Не работает автоматически с генерированный паттерн наблюдатель, приходится его изменять. Это баг или его нужно как-то по другому инициировать? Можно ли как то поменять шаблон автогенерации?
Ссылка на комментарий
11 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.