Hiearchical MVC (Model-view-controller) vs. PAC (Presentation-abstraction-control)

Podobné dokumenty
MVC (Model-View-Controller)

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

CineStar Černý Most Praha

Architektura. Vedení sesterské dokumentace

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

OSGi. Aplikační programování v Javě (BI-APJ) - 6 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

GUI v Javě a událostmi řízené programování

Projekt Kreslítko X36ASS

GUI v Javě a událostmi řízené programování

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

MVVM pro desktop i web

IS pro podporu BOZP na FIT ČVUT

Semin aˇr Java N avrhov e vzory Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Duben 2009 Radek Koˇc ı Semin aˇr Java N avrhov e vzory 1/ 25

Obsah přednášky. GUI v Javě a událostmi řízené programování. Základní prvky grafického rozhraní. Základní komponenty.

GWT pro pokročilé. MoroSystems, s.r.o. Pavel Klobása. Senior Java Developer.

Návrhové vzory. Jakub Klemsa, Jan Legerský. 30. října Objektově orientované programování.

D R U P A L V O J T Ě C H K U S W O J T H A

Architektura GIS KMA/AGI. Karel Jedlička

GUI v Javě a událostmi řízené programování

Observer. Klasifikace. Alias. Smysl. Potřeba sledování změn objektu a notifikace. Obdoba systému událostí (C#, Java) vlastními prostředky

Architektura softwarových systémů

Komponentově orientované webové frameworky. Jiří Stránský twitter.com/jistr

Analýza a Návrh. Analýza

Databázové a informační systémy

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

OMO Patterny pro UI. Základy UI - HTML, DOM, JavaScript, CSS. Single Page Application

Snadný vývoj webových aplikací s Nette. Lukáš Jelínek

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Návrhové vzory Design Patterns

Postup. Úvodem. Hlavní myšlenka frameworku. application. system. assets. uploads

GUI v Javě (připomínka) Návrhář GUI Příklad aplikace MVC Model-View-Controller Události Vnitřní třídy. MVC Model-View-Controller

7 Jazyk UML (Unified Modeling Language)

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

Java a XML. 10/26/09 1/7 Java a XML

Tvorba informačních systémů

Semin aˇr Java N avrhov e vzory Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Duben 2008 Radek Koˇc ı Semin aˇr Java N avrhov e vzory 1/ 24

KIV/PIA Semestrální práce

Architektura aplikace

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.

Obsah přednášky. GUI v Javě a událostmi řízené programování. Základní prvky grafického rozhraní. Základní komponenty.

7 Jazyk UML (Unified Modeling Language)

KIV/PIA 2013 Jan Tichava

Efektivní vývoj mobilních aplikací na více platforem současně. Mgr. David Gešvindr MCT MSP MCPD MCITP

Principy OOP při tvorbě aplikací v JEE. Michal Čejchan

Design Patterns. Tomáš Herceg Microsoft MVP (ASP.NET)

Michal Augustýn Microsoft Most Valuable Professional

Události. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické


Struktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová

Iterator & for cyklus

Aplikace s grafickým uživatelským rozhraním

TM1 vs Planning & Reporting

ČÁST 1. Zahřívací kolo. Co je a k čemu je návrhový vzor 33

Formy komunikace s knihovnami

Tvorba informačních systémů

Mobile application developent

Ruby on Rails. Bc. Tomáš Juřík Bc. Bára Huňková

ADMINISTRACE POČÍTAČOVÝCH SÍTÍ. OPC Server

Michal Augustýn ALWIL Software Microsoft Most Valuable Professional

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA

MBI - technologická realizace modelu

Návrh uživatelského rozhraní

Radek Krej í. NETCONF a YANG NETCONF. 29. listopadu 2014 Praha, IT 14.2

Mediator motivace. FontDialog. závislosti mezi jednotlivými ovládacími prvky jsou netriviální

Servlety a JSP. Petr Adámek, petr.adamek@ibacz.eu

Architektury informačních systémů

Architektury informačních systémů

Návrhové vzory OMO, LS 2014/2015

(Enterprise) JavaBeans. Lekce 7

Desktop GUI. IW5 - Programování v.net a C# Desktop GUI

GUI. Systémová integrace pro desktopové aplikace

Technologie. Osnovy kurzu: Školení správců systému. 1. den, dopolední blok

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

Aplikace je program určený pro uživatele. Aplikaci je možné rozdělit na části:

Tvorba informačních systémů

Základní typy struktur výpočetních systémů

Začínáme s vývojem pro Android

Vývoj informačních systémů. Přehled témat a úkolů

JavaServer Faces Zdeněk Troníček

Sem vložte zadání Vaší práce.

Návrh programu v Black Box Component Builderu s využitím architektury Model View Controller

Vývoj informačních systémů. Přehled témat a úkolů

Java - řazení objektů

modelu MVC pro tvorbu aplikací

Abstraktní datové typy: zásobník

Seznámení s prostředím dot.net Framework

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití:

Tvorba informačních systémů

Projekty pro výuku programování v jazyce Java

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz

CMS LARS VIVO VERZE 1.2 Z POHLEDU VIVOJÁŘE

Student s Life. Návrhová dokumentace (Design) Lukáš Barák, Jakub Ječmínek, Jaroslav Brchel, Jiří Zmeškal

Proč Angular JS framework?

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

Převod LN aplikace do xpages

Transkript:

Hiearchical MVC (Model-view-controller) vs. PAC (Presentation-abstraction-control)

Problém HMVC úvod MVC v určitých aplikacích nedostačující Příklad: webová stránka s widgety Např. kalendář, hodnocení, okno s tweety na určitý #... Jak na to? Více modulů/agentů (odpovídající MVC vzoru) rozdělených do 3 a více vrstev - Top-Level-Agent, Intermediate-Level-Agent, Bottom-Level-Agent (u PAC)

HMVC příklad

HMVC účastníci Client Interaguje s View Controller Zpracová události od View - input od uživatele. Využivá návrhový vzor Chain of Responsibility, pokud Controller nedokáže zpracovat událost, tak přepošle tuto událost rodičovskému Controlleru atd. Model Uchovává všechna data, stavy, logiku. Poskytuje rozhraní k manipulaci a získání dat, které uchovává. Posílá notifikace do View (o změně stavu apod.) View UI aplikace. View zpracovává události od Modelu a posílá notifikace Controlleru o změnu stavu. Data potřebná k zobrazení si bere přímo z Modelu.

Spodní vrstva HMVC - implementace public class ContentGUIPane extends javax.swing.jmenubar implements ActionListener {... public void actionperformed(actionevent actionevent) { if(actionevent.getactioncommand().equals("click")) {... AppEvent ae = new AppEvent(AppEvent.DATA_EVENT); ae.setmessage("hello_world"); ctlr_.handleappevent(ae); }... } }

public class ContentGUIPaneController {... HMVC - implementace Spodní vrstva - pokračování public void handleappevent(appevent evt) { if(evt.isdataevent()) contentmodel_.handleappevent(evt); else if(evt.isstatusevent() evt.isnavevent()) parentctlr_.handleappevent(evt); }... } public class ContentGUIPaneModel {... public void handleappevent(sample.controller.appevent ae) { String[] stra = new String[1]; // stra = ServerFacade.getData(xyz...); stra[0] = "Hello World!"; contentpane_.refreshview(stra); }... }

HMVC - implementace Spodní vrstva - pokračování public class ContentGUIPane {... public void refreshview(string[] data) { txtmsg_.settext(data[0]); validate(); }... }

public class GUIFrameController... { HMVC - implementace... public void handleappevent(appevent ae) { if(ae.getmessage().equals("show_hello_world")) { createchildtriad(); childctlr_.init(); } } public void createchildtriad() { } Střední vrstva ContentGUIPane contentpane = new ContentGUIPane(new Dimension(20,20)); ContentGUIPaneModel contentmodel = new ContentGUIPaneModel(); ContentGUIPaneController contentcontroller = new ContentGUIPaneController(); contentcontroller.setview(contentpane); contentcontroller.setmodel(contentmodel); contentcontroller.setparentcontroller(this); setchildcontroller(contentcontroller); view_.setpane(contentpane); }...

HMVC použití Aplikace Webove stranky s widgety Knihovny http://www.thecentric.com/resources/java-gnome-hmvc.tar.gz

HMVC shrnutí Vlastnosti Vyšší coupling Přístup k datům skze Controller z jakýkoli vrstvy Specificky vzor pro UI s widgety Není ideální řešení pro tenké klienty Související vzory MVC, PAC, MVVM, MVP

Problém PAC Úvod Máme-li množství podproblémů / agentů: s hierarchickým uspořádáním se vzájemnou komunikací ale jinak na sobě takřka nezávislí Příklad: Rozwidgetování Air traffic control Dynamické spreadsheety Základ architektury Rozdělení agentů do 3+ vrstvého stromu Každý agent = triáda P + A + C

PAC Triáda Presentation Stará se o prezentační vrstvu Např. šablona pro převod dat do HTML Abstraction Poskytuje přístup k datům a umožňuje jejich transformaci Control Obsahuje veškerou řídící logiku Zprostředkovává komunikaci mezi: Prezentací Abstrakcí a maminkou

PAC ilustrace

PAC Příklad 1 - Tvorba widgetu

PAC Příklad 2 - Změna dat

Aplikace Drupal PAC Použití https://www.drupal.org/ GIMP http://www.gimp.org/ Knihovny Java PAC Framework (?) http://jpac.sourceforge.net/ SporeJS Framework https://github.com/springload/sporejs

PAC Shrnutí +++ Podpora pro multi-tasking a multi-viewing Reusability a extensibility Oddělení zájmových oblastí!!! Obtížnější implementace - těžké určit správný počet agentů Složité kontrolery Vyšší výpočetní náročnost Relativně málo zdrojů Související vzory HMVC, MVC, MVP... Chain of Responsibility, Mediator, Observer

HMVC vs. PAC Publikováno 2000 (JavaWorld) Model, View, Controller Vyšší coupling Publikováno 1987 Presentation, Abstraction, Control Menší coupling - vše jde přes mediatora Control Přístup k datům skze Controller z jakýkoli vrstvy Více specifický vzor - poddruh PAC vzoru můžeme říct, určený hlavně na UI Přístup k datům pouze přes Control z Top-Level-Agenta Více obecný vzor použitelný na širokou škálu interaktivního softwaru