Observer Patterns in Java |
||||
|
||||
|
|
||||
![]() ![]() |
Търсих във форума, но не намерих теми или уроци свързани с тази интересна тема с интересни приложения.
не гарантирам, че инфото е 100% вярно, но понеже сега се занимавам с това(имам домашно очевидно, не е по свободна воля) реших да пусна малко полезна информация на фона на останалите теми в тон моля ви хора помогнете и т.н Observer Patterns Става въпрос за вид design pattern, който се използва са наблюдние на състоянието на обект или програма. Намира приложения при програми, където се имплементират Threads или Events. В общи линии става въпрос за връзката между един клас(във Википедия го наричат Субект), който искаме да наблюдаваме(Главен клас) и отделните класове Наблюдатели(които очевидно го наблюдават). Наблюдателите са зависими от промените в главния клас. Главният клас е подклас на Observable Главният клас съдържа: -списък с наблюдателите, които го наблюдават, примерно някакъв вид Collection: public ArrayList<TickerClient> observers =new ArrayList(); методи: -за добавяне на обзървери -премахване -notifyObservers()- осведомява относно промени Обзърверите имплементират интърфейса Observer, който изисква използването на метод update(Observable o, Object ob) Обзървър доколкото разбирам може да следи отделни параметри на главния клас(нампример ако в главн клас има параметър цена) На няколко места виждам, че гл клас се означава като Source, което напомня на аплетите и ивентите, които се също имат нещо общо с това... Имам освен това някои въпроси, ако някой случайно знае: 1.имаме следния метод public void notifyObservers(){ Iterator i = observers.iterator(); while( i.hasNext() ) { Observer o = ( Observer ) i.next(); o.update( this, o ); } }променя се цената на акция, обаче това не става директно ясно, защото не даваме на метода параметър, нали? и все пак, как може да се промени цената и да се вкара в ъпдейт-метода? и ъпдейта: public void update(Observable obj, Object arg) { if (arg instanceof String && obj.hasChanged()) { ???? (неизяснено–?) System.out.println("NameObserver: Name changed to" + ); } else { System.out.println("NameObserver: Some other change to subject!"); } Ако може да ми обясните тези два метода и тяхната зависимост } ![]() |
|||
|
Това мнение е редактирано от sunnyface на 15.06.2008 21:38
---------------------------
Потребител от: 28.04.08 | Всички уроци от sunnyface | Всички скриптове от sunnyface Dum Spiro, Spero! |
||||
|
|
||||
|
||||
|
|
||||
![]() ![]() ![]() |
На най-високо ниво идеята е следната. Нещо в главния клас се променя и той решава, че трябва да осведоми за това обзървърите. Главния клас си пази колекция с всички обзървъри и им извиква метода update() един по един. На update() се подава и обекта, който се е променил, защото един обзървър може да следи за промени в няколко обекта. Реда с въпросителните и на мен не ми е ясно защо е необходим.
|
|||
|
---------------------------
Потребител от: 04.04.08 | Всички уроци от dokster | Всички скриптове от dokster Just try me! |
||||
|
|
||||
|
|
||||
![]() ![]() ![]() |
Цитат от sunnyface@15.06.2008 21:29: Търсих във форума, но не намерих теми или уроци свързани с тази интересна тема с интересни приложения.не гарантирам, че инфото е 100% вярно, но понеже сега се занимавам с това(имам домашно очевидно, не е по свободна воля) реших да пусна малко полезна информация на фона на останалите теми в тон моля ви хора помогнете и т.н Observer Patterns Става въпрос за вид design pattern, който се използва са наблюдние на състоянието на обект или програма. Намира приложения при програми, където се имплементират Threads или Events. В общи линии става въпрос за връзката между един клас(във Википедия го наричат Субект), който искаме да наблюдаваме(Главен клас) и отделните класове Наблюдатели(които очевидно го наблюдават). Наблюдателите са зависими от промените в главния клас. земи да прочетеш нещо! Може после и това. И накрая да зпълним празното място - цък. Поздрави! |
|||
|
---------------------------
Потребител от: 25.02.08 | Всички уроци от napster | Всички скриптове от napster Шизофрения е когато в един форум общуваш сам със себе си под три различни ника!!! http://www.hidrostroitel.com |
||||
|
|
||||
|
|
||||
![]() ![]() |
Идеята я схващам много добре, имплементирането обаче е друго нещо.
@ dokster трябва ли според теб класовете на наблюдатели и наблчдаващи да се имплементирани като Threads, аз видях в интернет примери и по двата начина, кога трябва и кога не? Мерси предварително @napster ако си беше направил труда да прочетеш цялото ми мнение, щеше да видиш че информацията в него е взета точно от сайта, който си ми дал(и то английската му версия, която е по-пълна) като "полезен линк".Айде със здраве |
|||
|
Това мнение е редактирано от sunnyface на 17.06.2008 17:51
---------------------------
Потребител от: 28.04.08 | Всички уроци от sunnyface | Всички скриптове от sunnyface Dum Spiro, Spero! |
||||
|
|
||||
|
|
||||
![]() ![]() ![]() |
Не, не трябва. Обзървър патерна може спокойно да се реализира и без имплементиране на Thread. Трябва да се използват нишки, когато главните класова са заети с някаква блокираща дейност, от типа на слушане на порт.
|
|||
|
---------------------------
Потребител от: 04.04.08 | Всички уроци от dokster | Всички скриптове от dokster Just try me! |
||||
|
|
||||
| 1 посетител чете тази тема (0 потребители и 1 гост) | |
|
Активни потребители:
---
|
|
|
| |
Още по темата:
php форум,
flash форум,
html форум,
it форум,
seo форум,
vista форум,
pc форум,
css форум,
java форум,
mysql форум,
дизайн форум













