220 likes | 364 Views
CSC 313 – Advanced Programming Topics. Lecture 7: Observer Pattern –or– Lindsay Lohan, CSC Genius. Goals. Understand secret to how celebrities live Consider “talents” & if that keeps all our interest Look at how they live life in public without stalkers
E N D
CSC 313 – Advanced Programming Topics Lecture 7:Observer Pattern –or– Lindsay Lohan, CSC Genius
Goals • Understand secret to how celebrities live • Consider “talents” & if that keeps all our interest • Look at how they live life in public without stalkers • Communicate efficiently & see how it makes money • Understand the situations solved by Observers • What is intent of this design pattern? • In pattern, what represented by Subject&Observer?
Lindsay Lohan Economy • Studies investigated economy of celebrities • Direct earnings from movies, music, TV, ads • Profits earned by her label, handlers, etc. • Photographers’ income for pictures on TMZ • When placed on cover, increase in magazine sales • $150+ million/year industry for top celebrity
Something about Lindsay • Is it her singing?
Something about Lindsay • Is it her singing? • Acting key to her success?
Something about Lindsay • Is it her singing? • Acting key to her success? • Her keen modeling skills?
Something about Lindsay • Is it her singing? • Acting key to her success? • Her keen modeling skills? • Long, repeated, obvious public cries for help?
Something about Lindsay • Is it her singing? • Acting key to her success? • Her keen modeling skills? • Long, repeated, obvious public cries for help? • No! Really due to her mastery of Observer Pattern!
How Lindsay Does It • Millions interested in seeing this unfold • Every one of her painful, drug-addled mistakes • Every person she hits with her fists or her car • And, of course, what crime she will commit next • Could follow her to be around for each event • But may have job, school, or restraining orders • Lindsay uses Observer Pattern for attention & $$$
Observer Pattern • Observerswant update when subjectchanges • Must manage this 1:many relationship • Efficiently communicate all of these updates ConcreteSubject stateChanged() : booleansetChanged() : void
Foundation of an Industry • Lindsay notifies paparazzi before going out • With notice, photographers go to her destination • Take incriminating pictures of her doing her thing • With pictures takes, paparazzi notify press • Some published in magazines & used on Dr. Phil • Others will get posted to blogs • “Private use” of individuals for some pictures • Entire crisis then unfolds for enquiring minds
Textbook Observer Pattern • Readers sent Peoplewhen it is printed • Readersare observers • Subject is People magazine (in this case) • Whenever subject updated, observers notified • Magazines notified of picspaparazzi took • In this relationship, People is an observer • Subject is each photographer
Textbook Observer Pattern • Paparazzi alerted by Lindsay before leaving • Lindsay is ultimate subject (& pattern master) • Observers in this relationship are Paparazzi
True Genius • Very efficient way for Lindsay to get money • Also has benefit of limiting people following her • Readers notified of each and every change • In this adventure, readersobservers only • Lindsayonly a subject in this implementation • Magazines& photographersplay both roles • Observer Pattern mastered for this to work
True Genius Observer Pattern == $$$ in my bank!
Observer Is Hollywood • Hollywood Principle: Don’t Call Us, We’ll Call You • If observers were to ask constantly “Are we there yet? Are we there yet?” • Really slow when many observers exist • Principle says to have subject send alerts • Articles only after craziness on Lindsay’s part • When off probation, cover Kim Kardashian instead
Observer Pattern Intent • Looks to handle 1-to-many communication • Observers track the state of some single object • Performance hit from repeat Subject checks avoided • Common script used to perform this work • Once ready, Observer registers with Subject • Subject notifies eachObserverif something happens • If updates not wanted, Observer can deregister itself • Checking for updates not needed with Observer • Limits work to be done, so avoids swamping system
Co-Dependent Relationships • UML class diagrams with cycles are problem • Two classes inseparable no matter what • Classes completely dependent on each other • Almost impossible to add or extend the design • Since both classes needed, reusing one impossible
Replace Cycles With Observer • Cycle still in UML class diagram…
Replace Cycles With Observer • Cycle still in UML class diagram… • … but now classes depend only on interfaces • Classes can be replaced at any time • Only requires that new class implement interface • Far easier to add or modify classes now
For Next Lecture • Read pages 56 – 69 in book • Great… so how do we code the observer pattern? • Haven’t we seen this pattern before? • How is it actually written in the real world? • Is it really this simple and powerful?