Citace od: Shampoo kdy 24. 01. 2016, 22:30:39
To se mi nějak nezdá, můžete se odkázat na nějaký zdroj, kde je přímo napsáno, že Model je v MVC/MVP bez jakékoliv business logiky?
MVC ani vícevrstvá architektura nejsou nějaké teoretické modely s exaktní definicí. Je to označení něčeho, co se v praxi používá – aby si vývojáři nemuseli dlouho vysvětlovat, o co jde, prostě jen řeknou ,,MVC", a tím jsou dané hrubé obrysy. V praxi ale můžete najít implementace, kde v modelu v MVC opravdu žádná logika není (a ten model je implementován třeba čistě pomocí mapy klíč–hodnota), tak implementace, které business logiku zatahují i do modelu v MVC. Ale to už je pak porušeno oddělení vrstev, protože část business logiky, která má tvořit samostatnou vrstvu, taháte do prezentační vrstvy. Není to ale vůbec neobvyklé, dokonce pro to vzniká celá řada podpůrných mechanismů, které mají zajistit to, aby ta business logika byla naprogramovaná jenom jednou a v prezentační vrstvě se použila pokud možno automaticky. Ostatně celé programování v JavaScriptu na serveru (např. Node.js) vzniklo právě proto, aby bylo možné sdílet kód mezi klientem a serverem, tedy aby se mohlo rozvolnit to přísné oddělení vrstev.
Nicméně ani z pohledu objektového programování není business logika v modelu úplně správně. Protože pak ty objekty modelu mají zároveň dvě různé funkce – jednak uchovávají nějaký stav a informují posluchače o jeho změnách, a vedle toho mají ještě tu business logiku. Někdy se to dělává tak (má to tak třeba knihovna JGoodies Binding pro javovský Swing), že máte objekty doménového modelu, které mohou implementovat i tu business logiku, a ty obalíte prezentačním modelem, který řeší ty změny stavů a například i rozeditované objekty.