Kihagyás

Behavioral Patterns

A viselkedési minták az objektumok közötti felelősségmegosztással és kommunikációval foglalkoznak. Céljuk, hogy a logika lazán csatolt és cserélhető legyen.

Tartalomjegyzék

  • Chain of Responsibility – láncba kötött feldolgozók közül az dönti el a kérést, aki "magára ismer".
  • Command – a műveletet objektumba zárjuk, így tárolható, sorba tehető és visszacsinálható (undo).
  • Iterator – egységes módon járjunk végig egy gyűjteményen, függetlenül annak belső szerkezetétől.
  • Observer – egy "subject" automatikusan értesíti a feliratkozott megfigyelőket.
  • State – az objektum viselkedése belső állapotától függ, minden állapot külön osztály.
  • Strategy – algoritmusok cserélhető családja, amit futásidőben be lehet állítani.
  • Template Method – az algoritmus váza fix az ősosztályban, csak a lépések részleteit írják felül az alosztályok.

Observer vs. Strategy

flowchart LR
    subgraph Observer
      S[Subject] -->|notify| O1[Observer 1]
      S -->|notify| O2[Observer 2]
    end
    subgraph Strategy
      C[Context] -->|delegál| St[Strategy interface]
      St --> A[Algoritmus A]
      St --> B[Algoritmus B]
    end

A Observer eseményalapú: 1 → N kapcsolat van, és a Subject nem tudja előre, hány figyelő van. A Strategy behelyettesíthető viselkedés: 1 → 1 kapcsolat van adott pillanatban, de a stratégia futás közben cserélhető.

State vs. Strategy

A kettő szerkezete majdnem azonos (mindkettő interfész mögé delegál), de a szándék más:

Szempont State Strategy
Ki dönt a váltásról? Maga az állapot, belülről A kliens, kívülről
Mit modellezünk? Az objektum életciklusát (állapotgép) Algoritmusok cserélhető családját
Tipikus eset Csomag státusza, kapcsolat élete, rendelés folyamata Fizetési mód, tömörítés, útvonaltervezés

Template Method vs. Strategy

A Template Method öröklés alapú: az algoritmus váza fix, a lépéseket az alosztály fordítási időben dönti el. A Strategy kompozíció alapú: a teljes algoritmus futásidőben cserélhető.