Szerintem a tervezési mintáknál sokkal fontosabb, hogy megismerd milyen szoftver architektúrák illetve architektúra minták léteznek, és ezek közül mit szoktak a web-en használni.
Az architektúrákról általában egy vázlatos összefoglalót ad a wikilap.
Ami a web szempontjából releváns, az szerintem a 2, 3, 3 1/2 rétegű architektúrák ismerete link. Ezeket útóbbi kettőt szokták bevetni enterprise, főleg java környezetben.
Aztán itt van a SOA, amit szerintem egy CMS rendszernél nem fogsz bevetni, de érdemes tudni miről van szó: wikilap.
És ha már SOA volt akkor jöjjön a jelenlegi kedvencem, a REST/ROA, amit nagyon fontolóra érdemes venni egy php alkalmazás esetén: itt és főleg itt
Van aztán az MVC, ami körül elég sok homály leng szvsz. Van ugyanis egy OO tervezési minta, amit egy UML diagramon ábrázolva megtalálsz a patterns könyvben, és van egy webalkalmazás tervezési "stílus" ami erre emlékeztet, szintén MVC-nek szeretik nevezni, de ha UML diagramon ábrázolnád akkor nem pont úgy nézne ki. Sőt olyan alkalmazást is neveztek már MVC alapúnak ami még csak nem is objektum orientált nyelven íródott. Szóval ha egy MVC programot látok sose tudom mire gondoljak pontosan...
Van még egy mókás dolog, a Pipes and Filters, amit itt-ott érdemes használni: wikilap. Filterek már az idők kezdete óta vannak a java servletekben és újabban már az apache-ban is. Szép példa a Cocoon arra, hogy meddig lehet eljutni egy kis REST-tel és a filterekkel. A legjobb ezt a megoldást használni az authentikációnál pl.
Megemlítendő még az eseményvezérelt architektúra: wikilap.
Ha ezekbe a wikilapokba, fejezetekbe beleolvasol, rá fogsz jönni, hogy a szoftvertervezés azért jobbára még esetleges és okkult tudomány, ahol ötletek kavarognak és még az sem biztos, hogy miről beszélünk...
Szerencsére azért már látszik egy kis fény a távolban: tőlünk nyugatabbra már van olyan szakma és képzés, hogy software engineer, aminek a törzsanyagát az IEEE sok-sok szakértője határozta meg, köztük néhány magyar is: http://www.swebok.org/. Ennek a törzsanyagnak az adaptálódását látom itthon a BME infó rendszerfejlesztés szakirányon (a többit nem ismerem annyira).
Illetve ha sok időd van, és tényleg érteni akarsz a dolgokhoz, akkor van itt egy könyv:
http://www.amazon.com/Software-Engineering-International-Computer-Scien…
magyarul:
http://www.libri.hu/hu/konyvek/szamitastechnika_internet/programozas_fe…
A konkrét problémára visszatérve, ha adott a technológia, az erősen befolyásolja, hogy milyen tervet használsz. Például a php alapvetően nem egy állapottal rendelkező dolog és ennek sajnos következményei vannak. Továbbá php-ban legtöbbször együtt használnak OO mintákat és relációs adatbázist, ami valami ORM megoldás bevetését teszi szükségessé. Ezek olyanok, hogy egész jól működnek, amíg egyszer valami igazán bonyolult dolgot akarsz velük csinálni és akkor jól megszívatnak. Ha meg nem használsz ORM-réteget, akkor fennáll a lehetősége hogy az adott adatbázis programtól fogsz függeni... Szóval a lényeg az, hogy a követelményeidet tisztázd előbb és az alapján dönts.