1 / 14

Behavioral design patterns State

Behavioral design patterns State. Miroslav Sajko. Modelová situácia. Trieda TCPConnection reprezentujúca sieťové pripojenie Objekt má 3 stavy : nadviazan é , načúvajúce a uzavreté

lundy
Télécharger la présentation

Behavioral design patterns State

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. BehavioraldesignpatternsState Miroslav Sajko

  2. Modelová situácia • Trieda TCPConnection reprezentujúca sieťové pripojenie • Objekt má 3 stavy: nadviazané, načúvajúce a uzavreté • Reakcia na požiadavku závisí od jeho stavu (efekt požiadavky open je iný pri ukončenom a iný pri nadviazanom pripojení) • Kľúčové je zavedenie abstraktnej triedy TCPState, ktorá reprezentuje stav pripojenia

  3. Modelová situácia

  4. State • „objectforstates“ • Povoľ objektu meniť svoje správanie, keď sa zmení jeho interný stav. Objekt sa bude javiť akoby zmenil svoju triedu. • (Allow an object to alter its behavior when its internal state changes.The objectwill appear to change its class.)

  5. State v UML • Context– definuje rozhranie záujmu pre klientov a udržiava tú inštanciu ConcreteState, ktorá zodpovedá aktuálnemu stavu • State – definuje rozhranie pre zapúzdrenie správania priradeného stavu Contextu • Triedy ConcreteStates – každá implementuje správanie konkrétneho stavu Contextu

  6. Pozorovania • Contextdeleguje stavovo špecifické požiadavky pre aktuálny ConcreteState objekt • Context môže poslať sám seba ako argument stavovému objektu, aby v prípade nutnosti k nemu stavový objekt vedel pristupovať • Context je hlavné rozhranie pre klientov, klienti konfigurujú Context stavovými objektami, s ktorými už potom nekomunikujú priamo • Aj ContextajConcreteState triedy môžu rozhodovať o tom, ktorý stav nasleduje po ktorom a za akých podmienok

  7. Dôsledky • Lokalizuje správanie špecifické pre jednotlivé stavy a oddeľuje ich od zvyšku logiky • Zmena stavu je explicitná – nemení sa veľa premenných, ale jedna –stavový objekt Contextu • Stav Contextu nikdy nebude inkonzistentný • Stavové objekty môžu byť aj zdieľané • Vyšší počet tried

  8. Kedy použiť vzor State? • Správanie objektu silno závisí od jeho stavu • Musí meniť správanie za behu programu • Operácie majú zložité podmienkové výrazy • Stav je reprezentovaný niekoľkými vymenovanými konštantami a operácie obsahujú rovnakú podmienkovú štruktúru • Vzor State umožňuje každú vetvu podmienky dať do separátnej triedy, čo umožní narábanie so stavom ako s objektom

  9. Implementácia • Kto definuje zmenu stavu? Context – ak kritériá na zmenu sú fixné ConcreteState – flexibilnejšie, ľahko upraviteľné, avšak vznikajú väzby medzi týmito triedami • Kedy vytvárať a zahadzovať stavové objekty? podľa potreby - ak nie je známe, či všetky stavy budú dosiahnuté počas behu a menia sa občas vytvorenie objektov vopred – ak sa stavy často menia a stavové objekty nesú veľa informácií

  10. Sample

  11. Sample

  12. Využitie v praxi a súvisiace vzory • TCP protokol, POP protokol • Paint – Drawingtool/Selectiontool/... • Adobe Reader - Handtool/Selectiontool/Zoom • Banky – otvorené/zatvorené bankové konto • Flyweigth – zdieľanie stavov • Singleton – stavy sú často impl. ako singletony • Strategy – podobné riešenie, problém je iný

  13. Zdroje • Design Patterns: Elements of Reusable Object-Oriented Software • http://java.dzone.com/articles/design-patterns-state

  14. Ďakujem za pozornosťOtázky? Kontakt: miroslav.sajko@student.upjs.sk

More Related