Ievads šablonos

Šabloni

"Katrs šablons apraksta problēmu, kura mūsu darbības vidē rodas atkal un atkal, un tad dod pieeju tās risinājumam - kurš arī parādās miljoniem reižu, un tomēr nekad nav absolūti viens un tas pats" (Christopher Alexander).

Design Patterns: Descriptions of communicating objects and classes that are customized to solve a general design problem in a particular context. (GOF - Gang of Four, Design Patterns)

Šabloni programmēšanā

Projektēšanas šablonu raksturo šādas īpašības:

  • Tas ir atkārtojams process vai projektēšanas paņēmiens, kurš risina kādu specifisku jautājumu sistēmas veidošanā
  • Tas ir prognozējams savā funkcionalitātē un konsistenti izpauž savas priekšrocības un trūkumus
  • Tas ir mehānisms, ar kuru objektorientētā valodā var ātri un viegli nodrošināt klašu komunikāciju kādā specifiskā, programmētājam vēlamā veidā.
  • Tas ir īss apzīmējums jeb abstrakcija, kas palīdz projektētājiem efektīvāk sazināties.

Programmēšanas šabloni ir atkalizmantojamas projektēšanas risinājumu idejas, kuras rodas, veidojot informatīvo sistēmu vai aplikāciju. Tie piedāvā ne vien noteiktu procesu vai projektējumu, ko izmantot vienam vai dažiem izstrādātājiem, bet arī standartizētu arhitektūru, kura veicina vieglāku paplašināmību un uzturamību.

Šabloni veidojas, kad pieredzējuši izstrādātāji sāk saprast visas būtiskās projektēšanas problēmas nianses un noformē risinājumu, kurš tās ņem vērā. Tad šablonu var dokumentēt, izsvērt tā priekšrocības un trūkumus, un informēt par to citus izstrādātājus. Kad šablona lietošanas process ir stabilizējies un šablons ir kļuvis prognozējams un atkalizmantojams, tas var kļūt par efektīvu jaunas arhitektūras veidošanas rīku, un arī komunikācijas līdzekli izstrādātāju komandas vidū. Noteiktās projektēšanas fāzēs var ietaupīt laiku.

Literatūra

  • Eric Gamma, Richard Helm, John Vlissedes, Ralph Johnson Design Patterns: Elements of reusable Object- Oriented Software. Addison- Wesley 1995. [a.k.a. "Gang of Four" grāmata]
  • Buschmann: A System of Patterns, John Wiley & Sons 1996
  • Coplien, Schmidt (ed): Pattern Languages of Program Design I, II, III, IV, V. Addison- Wesley 1995- 2000
  • Mark Grand, Patterns in Java. Wiley Computer Publishing
  • Deepak Alur, John Crupi, Dan Malks, Core J2EE Patterns. Sun Microsystems Press
  • Stephen Stelting, Olav Maassen, Applied Java Patterns. Sun Microsystems Press

Kāpēc vajadzīgi projektēšanas šabloni?

  • Tie risina "reālas" problēmas
  • Iemieso zināšanas par priekšmetapgabalu, atkalizmanto veiksmīgāko praktiķu sasniegumus
  • Dokumentē projektējuma izvēli un pamato to
  • Veido vienotu terminoloģiju projektēšanas problēmu apspriešanai
  • Līdzās pašam risinājumam dod ieskatu arī iespējamās problēmās un citās saistītās lietās

Šabloni ir diagrammas jeb modeļi, kurus lieto aplikācijas projektēšanas gaitā. Ir daudzi J2EE specifiski šabloni, kas apraksta korporatīvo aplikāciju izstrādātāju tipiskākās vajadzības. Šabloni apraksta problēmu, kuru tie taisās risināt, pašu risinājumu, un sekas, ko šis risinājums rada.

Projektēšanas šablona struktūra

Katru šablonu parasti dokumentē, norādot sekojošo:

  • Šablona nosaukums
  • Problēmas apraksts
  • Ar problēmu saistītie apsvērumi, konfliktējošie spēki, utml.
  • Vispārīgs risinājums jeb šablona pielietošanas veids
  • Šablona lietošanas sekas
  • Saistītie šabloni

Lai šablonu mērķus, lietojamības robežas un situācijas varētu salīdzināt, ir vajadzīgs vienots veids, kā šablonus aprakstīt un dokumentēt. Katrai šablonu uzziņas grāmatai ir savas īpatnības, tomēr ir dažas kopīgas tradīcijas, saskaņā ar kurām parasti noformē šablonu aprakstus.

Pirmkārt, svarīgs šablona nosaukums, kas ir īss šablona idejas kopsavilkums. Cita informācija ir apraksts par situācijām, šablona priekšrocībām un trūkumiem, kā arī UML diagrammas.

Problēmas apraksts
Ko ar šablonu var panākt; reālās dzīves situāciju apraksti
Apsvērumi
Kādi apsvērumi tiks ņemti vērā, izvēloties šablonam raksturīgo projektējumu
Vispārīgs risinājums
Šablona sniegtā risinājuma apraksts
Sekas
Kādas ir šablona lietošanas priekšrocības un trūkumi
Saistītie šabloni
Citi šabloni, kurus var izvēlēties līdzīgās situācijās; tie, kuri ir alternatīvas dotajam

Problēmas apraksts šablonam

  • Problēmas apraksts raksturo izstrādātājam risināmo problēmu
  • Izstrādātājs var izvēlēties šablonu, meklējot šablonu katalogā un skatoties problēmu aprakstus

Visi šablonu apraksti sākas ar problēmas aprakstu - tas ir detalizēts (bet pietiekoši vispārīgs) apraksts tai problēmai, ko šis šablons risinās. Projektētāji var atrast savu problēmu risinājumus, meklējot šablonu katalogā - bieži vien pēc ļoti īsajiem problēmu kopsavilkumiem.

Šablonu lietošana

Šablona risinājumā ir aprakstīts:

  • Kā tos var modificēt, pielāgot situācijai
  • Aprakstīta "labākā prakse"

Seku apraksts

  • Kādas ir šablona lietošanas priekšrocības un trūkumi
  • Kādi kompromisi ir jāpieņem, lai šablonu izvēlētos

Ir svarīgi dokumentēt šablona izraisītās sekas un radītos ierobežojumus, jo citādi šablons labi nestrādās un var sarežģīt sistēmas darbību.

  • Tipiska šablona priekšrocība: Kodu kļūst vieglāk atkalizmantot
  • Tipisks šablona trūkums: Kodu var kļūt grūtāk būtiski pārmainīt, jo šablons uzliek savus pieņēmumus, kas var vēlāk neattaisnoties.

Šablonu kategorijas un piemēri - I

Šablonu kategorija Apraksts Šablonu piemēri
Pamatšabloni (fundamental) Lai veidotu lielākus šablonus Interface
Proxy
Prezentācijas (presentation) Lai veidotu lietotāja interfeisus Front Controller
View Helper
Dispatcher
Radīšanas (creational) Objektu veidošana saskaņā ar dažādiem nosacījumiem Factory Method
Builder
Biznesslāņa (Business Tier) Strukturizēt biznesa loģiku vai servisus Value Object
Session Facade
Integrācijas (Integration) Saziņa ar ārējām sistēmām un resursiem Data Access Object
Service Activator
Action Handler
Interface šablons
Izsaucošo klasi padara neatkarīgu no izsauktās klases, kontrolējot pieeju datiem un servisiem caur interfeisu.
Proxy šablons
Metožu izsaukumi notiek netieši caur starpniekobjektu (proxy)

Šablonu kategorijas un piemēri - II

Šablonu kategorija Apraksts Šablonu piemēri
Sadalīšanas (Partitioning) Saliktu jēdzienu un loģikas sadalījums vairākās klasēs Filtered
Composite
Struktūras (Structural) Atdala prezentāciju, datus, biznesloģiku, notikumu apstrādi atsevišķos blokos Model View Controller Adapter
Uzvedības (Behavioral) Koordinē objekta stāvokli Mediator
State
Paralēlisma (Concurrency) Realizē paralēlu piekļuvi resursiem Single Thread Execution
Read-Write Lock

Lapa mainīta 2004-11-18 13:45:29