java blog jAbLoK

... řekněte Javě Ja!

/** * @author Pavel Kolesnikov * @date 22.3.2005 v 13:51 */

O Commons Chain

Kdo sledujete vývoj frameworku Struts v řadě 1.3, jistě tušíte, že hlavní změnou je redesign hlavní třídy RequestProcessor (význam zřejmý). Dosavadní implementace byla realizovaná jako "Template Method", tedy jedna třída, jejíž klíčová veřejná metoda se sestává z volání překrytelných chráněných metod.

Nevýhody tohoto přístupu se začnou ukazovat v okamžiku, kdy se pokusíme chování RequestProcessoru trochu přizpůsobit. Jednoduchá změna některé fáze zpracovávání požadavku ještě projde, jakmile ale potřebujeme například zkombinovat chování dvou stávajících potomků RequestProcessoru, začneme se potýkat s komplikacemi vyplývajícími z fungování dědičnosti.

Proto se vývojáři Struts rozhodli ve verzi 1.3 přepracovat RequestProcessor do podoby založeném na vzoru Chain Of Responsibility. To znamená, že jednotlivé podúlohy vykonávané během zpracovávání HTTP požadavku jsou rozsekány do jednotlivých "Commandů", jejichž návaznost nadefinuje volající třída, nejlépe na základě konfiguračního souboru. Pro tyto účely bylo použito projektu "Commons Chain" z Jakarta Commons, který implementaci vzoru "Chain of responsibility" poskytuje.

A celé toto povídání o dalším vývoji Struts bylo jen kvůli tomu, abych ozřejmil, proč mi přijde smysluplné odkázat na článek A Look at Commons Chain :)