Návrhové vzory 1

58. hodina MVOP WBF

Matěj Cajthaml — SSPŠ

©

Rozdělení aplikací

Rozdělení aplikací

  • frontend
  • backend
  • databáze

Jaké data z backendu by měl frontend ukládat (požadovat o ně)?

Má frontend ukládat veškeré data v cache (localStorage)?

Je vhodné, aby si frontend dovymýšlel data, která by měl backend poskytnout?

Vrstvení

Vrstvení

  • způsob, jak rozdělit aplikaci do logických částí
  • každá část má svůj vlastní úkol
    • komunikace se serverem
    • zpracování dat
    • uchovávání dat
    • akce uživatele
    • zobrazování šablon

Co jsou výhody a nevýhody rozdělení aplikace do logických částí?

Jak vytvářet logické části aplikace ve Vue?

Návrh těchto vrstev si ukážeme později.

Ukládání dat ze serveru

Ukládání dat ze serveru

  • data ze serveru by měli být DTO
  • DTO = Data Transfer Object
  • objekt, který představuje data ze serveru v surovém stavu
  • DTO se převádí na objekt, který je vhodný pro frontend
  • máme k dispozici datové typy a metody, se kterými můžeme pracovat

Data, které se předávájí (DTO) se tedy přímo neukládají. Proč?

TODO listy PTSD

Práce

Vytvořme správnou aplikaci s DTO a dalšími objekty na TODO listy z Morsmordre.

Návrhové vzory

Návrhové vzory

  • způsob řešení určitého problému
  • pro specifické situace
  • řadí se do kategorií

Kategorie

  • Creational - vytváření objektů
  • Structural - struktura objektů
  • Behavioral - chování objektů

Creational

  • řeší problémy s vytvářením objektů
  • popisují jak se objekty vytvářejí a vybírají

Structural

  • řeší problémy s upsořádáním objektů
  • zpřehledňují strukturu objektů

Behavioral

  • řeší problémy s chováním objektů
  • popisují jak se objekty komunikují
  • dědičnost

Jsou návrhové vzory framework či knihovna?

Návrhové vzory nejsou vhodné pro všechny situace a problémy.

Cílem hodin je představit nejdůležitější návrhové vzory.

Singleton

  • creational
  • umožňuje vytvořit pouze jednu instanci objektu
  • přístup k instanci je zajištěn pomocí statické metody/vlastnosti

Výhody a nevýhody singletonu?

Kde byste singleton použili?

Command

  • behavioral
  • umožňuje zabalit požadavek do objektu
  • požadavek je pak možné uložit, zaslat, zrušit, opakovat
  • požadavek je možné zpracovat pomocí jiného objektu

Výhody a nevýhody commandu?

Kde byste command použili?

Observer

  • behavioral
  • umožňuje objektu sledovat změny jiného objektu
  • objekt je možné přidat, odebrat, změnit
  • objekt je možné zpracovat pomocí jiného objektu

Výhody a nevýhody observeru?

Kde byste observer použili?

Facade

  • structural
  • umožňuje zjednodušit přístup k objektům
  • místo přístupu k více objektům je možné přistoupit k jednomu
  • sjednocuje volání metod

Výhody a nevýhody facade?

Kde byste facade použili?

Refactoring

Refactoring

  • proces zlepšování kódu
  • zlepšuje čitelnost, přehlednost, udržitelnost
  • zvyšuje kvalitu kódu
  • zvyšuje jeho přehlednost
  • zvyšuje jeho udržitelnost

Používáme při refactoringu návrhové vzory?

https://refactoring.guru

Děkuji za pozornost!

  • matej.cajthaml@ssps.cz
  • https://ssps.cajthaml.eu/