Citace od: ondrah kdy 17. 06. 2019, 13:20:48
Ono by to teda mělo být zřejmé i selským rozumem - kdo jiný než objekt by měl vědět, jak ten stav správně obnovit?
To je klasický problém OOP, že hranice odpovědnosti nejsou pevně dané a jednu a tu samou činnost můžete chápat jako akci objektu i jako akci něčeho jiného na objektu. Klasický případ obnovy stavu je třeba uložení do databáze. A tam už jde o klasický spor – má se umět objekt do databáze uložit sám, nebo má někdo jiný uložit objekt do databáze? Většinou vyhrává ten druhý přístup, protože to uložení a obnovení z databáze není primární funkcí daného objektu, naopak často chceme, aby bylo možné jej ukládat různými způsoby, o kterých ten objekt ani nemusí vědět.
Proto není pro princip (návrhový vzor) podstatné, zda se objekt obnovuje sám nebo je obnovován zvenčí – to je jen implementační detail. Návrhový vzor Obnovitel popisuje ten myšlenkový koncept ,,aby bylo možné později obnovit stav objektu, je nutné v okamžiku uložení stavu zaznamenat všechna data, která jsou potřebná pro pozdější obnovení stavu". Ostatně spousta programovacích paradigmat ani nezná koncept ,,objekt dělá", umožňují jen ,,s objektem se/někdo dělá".