Пројектни узорци

У софтверском инжењерству, пројектни узорак, шаблон или образац (енгл. design pattern) је опште, поново употребљиво решење за честе проблеме који се срећу приликом пројектовања софтвера. Пројектни узорак није готов дизајн који се може директно претворити у изворни код. Он служи само као опис или шаблон прилагођен да реши неки општији пројектни проблем у посебном контексту. Објектно оријентисани пројектни узорци су обично описи комуницирајућих објеката и класа, без одређивања конкретних класа и објеката.

Пројектни узорци припадају домену модула и веза између њих. На вишем нивоу су архитектурни узорци који су већи по опсегу, а обично описују општије обрасце који су везани за цео систем. [1]

Нису сви софтверски узорци у исто време и пројектни узорци. На пример, алгоритми не решавају пројектне проблеме, већ само рачунарске проблеме.

Историјат

Узорци су првобитно настали као концепт у архитектури које је осмислио Кристофер Александер (1977-79). Године 1987, Кент Бек и Вард Канингем су почели да експериментишу са идејом примене узорака у програмирању и изнели су своје резултате исте године на OOPSLA конференцији. Наредних година су Бек, Канингем и остали наставили рад на узорцима.

Пројектни узорци су добили на популарности 1994. године, када је објављена књига Design Patterns: Elements of Reusable Object-Oriented Software коју су написали Ерих Гама, Ричард Хелм, Ралф Џонсон и Џон Влисајдс (познатији као „Gang of Four“ или често скраћено GoF). Те исте године је одржана и прва конференција о пројектним узорцима.

Пракса

Пројектни узорци могу да убрзају процес развоја софтвера тако што нуде тестиране и доказане парадигме развоја. Ефективно пројектовање софтвера захтева узимање у обзир проблема који нису видљиви све до касних фаза имплементације. Поново употребљиви пројектни узорци помажу да се избегну ситна проблематична питања која касније могу да изазову огромне проблеме, а побољшавају и читљивост изворног кôда оним програмерима који су већ упознати са пројектним узорцима.

Да би се повећала флексибилност, пројектни узорци често уводе додатни ниво комплексности, који у неким случајевима може да усложни дизајн и да чак утиче и на перформансе апликације.

По дефиниције, нови узорак се мора писати од почетка за сваку апликацију која га користи. Пошто неки аутори ово виде као корак уназад од поновне употребљивости компонената, истраживачи су радили на томе да претворе пројектне узорке у готове компоненте. Мејер и Арнаут тврде са имају успешност од 66% у претварању у компоненте најпознатијих узорака. [2]

Често, људи само разумеју како да примене неки пројектни дизајн на одређени проблем. Овакве технике су тешко примењиве на шири скуп проблема. Пројктни узорци нуде општија решења, документовани на начин који не захтева везивање за специфичности одређеног проблема.

Структура

Пројектни узорци су састављени од неколико делова (погледати документацију испод). Најинтересантнији одељци су „Структура“, „Учесници“ и „Колаборација“. Ови одељци описују основну дизајнерску идеју: прототип микроархитектуре коју програмери копирају и прилагођавају њиховом дизајну да би решили проблем који се изнова понавља. Микроархитектура је скуп делова програма (класа, метода...) и веза између њих. Програмери искоришћавају пројектне узорке тако што у сопствени дизајн уводе ове прототипске микроархитектуре, што доводи до тога да њихове микроархитектуре дизајном почињу да личе на основну идеју пројектног узорка.

Поред овога, узорци омогућавају програмерима да комуницирају међусобно користећи имена која су већ увелико у употреби, разумевајући се лакше на тај начин. Основни пројектни узорци се временом могу побољшавати, чинећи их тако робуснијим од ad-hoc дизајна.

Доменски специфични узорци

Уложен је посебан труд да се направе пројектни узорци за одређене домене, укључујући и постојеће пројектне узорке, али и доменски специфичне пројектне узорке. Примери оваквих узорака су пројектни узорци корисничког сучеља [3] , узорци визуелизације података [4] и узорци у веб-дизајнирању [5].

Класификација и листа

Пројектни узорци су оригинално груписани у категорије: узорци креирања, узорци структуре и узорци понашања, а описани концептима делегирања, агрегације и консултације. Још једна класификација је увела и појам архитектурног узорка који се може применити на нивоу архитектуре система, а пример таквог узорка је Model-View-Controller узорак.

Име Опис У књизи Design Patterns У књизи Code Complete
Узорци креирања
Уникат Обезбеђује да класа има само једну инстанцу и даје глобални приступ тој инстанци. Да Да
Прототип Специфицира врсте објеката који се креирају коришћењем прототипске инстанце и креира нове објекте копирањем прототипа. Да Не
Фабрички метод Дефинише интерфејс за креирање објеката, али оставља поткласама да одлуче чије објекте креирају. Узорак допушта класи да делегира стварање објекта поткласи. Да Да
Апстрактна фабрика Обезбеђује интерфејс за креирање фамилија повезаних или зависних објеката без специфицирања конкретних класа фамилије објеката. Да Да
Градитељ Раздваја конструкцију комплексног објекта од његове репрезентације тако да исти процес може да креира различите репорезентације. Да Не
Лења иницијализација Тактички одлаже стварање објекта, израчунавање неке вредности или други скуп процес док он први пут не буде потребан. Не Не
Пул конекција Избегава скупе операције вишеструког конектовања и дисконектовања. ? ?
Пул објеката Избегава скупа дохватања и отпуштања ресурса поново употребљавајући објекте који се више не користе. Не Не
Узорци структуре
Композиција Компонује објекте у структуру стабла (хијерархија целина-део). Композиција омогућава клијентима да униформно третирају и индивидуалне објекте и њихове композиције. Да Да
Декоратер Динамички додаје могућности неком објекту. Декоратер представља флексибилну алтернативу извођењу за проширивање функционалности. Да Да
Мува Дељење малих објеката (објеката без стања) да би се избегла хиперпродукција објеката. Да Не
Адаптер Конвертује интерфејс класе у други интерфејс који клијенти очекују. Адаптер омогућава рад заједно класа које иначе то не би могле због различитог интерфејса. Да Да
Фасада Пружа јединствен интерфејс скупу различитих интерфејса неког подсистема. Фасада дефинише интерфејс вишег нивоа да би се подсистем лакше користио. Да Да
Прокси Реализује замену (сурогат) другог објекта који контролише приступ оригиналном објекту. Да Не
Мост Раздваја апстракцију од њене имплементације да би се могле независно мењати. Да Да
Узорци понашања
Посматрач Дефинише зависност 1:N између објеката, такву да када један објекат промени стање сви зависни објекти буду обавештени и аутоматски се ажурирају. Да Да
Итератор Обезбеђује секвенцијални приступ елементима неког агрегатног објекта без експонирања унутрашње структуре тог агрегата. Да Да
Стратегија Дефинише фамилију алгоритама, енкапсулирајући сваки и чини их међусобно замењивим. Стратегија омогућава једноставну промена алгоритма у време извршења. Да Да
Шаблонски метод Дефинише костур неког операционог алгоритма, делегирајући поједине кораке поткласама. Шаблонски метод омогућава поткласама да редефинишу одређене кораке алгоритма без измене његове структуре. Да Да
Стање Омогућава објекту да мења своје понашање када се мења његово унутрашње стање. Изгледа када да објекат мења своју класу. Да Не
Подсетник Без нарушавања енкапсулације снима и екстернализује стање неког објекат, тако да омогући да се објекат касније може вратити у дато стање. Да Не
Посредник Дефинише објекат који енкапсулира како скуп објеката интерагује. Посредник омогућава слабо спрезање објеката што постиже чувањем објеката који се међусобно реферишу, а то дозвољава да им се интеракција мења независно. Да Не
Команда Енкапсулира захтев у један објекат, омогућавајући да се клијенти параметризују различитим захтевима, да се захтеви испоручују кроз ред чекања, да се прави дневник захтева и да се ефекти извршеног захтева пониште. Да Не
Ланац одговорности Избегава непосредно везивање пошиљаоца захтева са примаоцем захтева, дајући шансу већем броју објеката да обраде захтев. Ланац одговорности повезује објекте примаоце захтева у ланац и прослеђује захтев низ ланац док га неки објекат не обради. Да Не
Посетилац Репрезентује једну операцију коју треба применити на елементе једне објектне структуре. Посетилац омогућава дефинисање нове операције без измене класа елемената над којим се извршава. Да Не
Интерпретер За дати језик дефинише репрезентацију његове граматике, као и интерпетер који користи ту репрезентацију да интерпретира исказе језика. Да Не

Документација

Документација пројектног узорка описује контекст у коме се узорак користи, проблематику које узорак треба да реши и предложено решење. Не постоји један стандардни формат за документовање пројектних узорака. Штавише, постоји доста различитих формата које су користили различити аутори узорака. Ипак, према Мартину Фаулеру, неке форме за описивање пројектних узорака су постале познатије од других, а самим тим и постале основа за описивање нових пројектних узорака. [6] Један од чешће коришћених формата документације је онај који су користили Ерих Гама и остали („Gang of Four“) при писању књиге „Design Patterns“. Тај формат садржи следеће одељке:

  • Име узорка и класификација: Јединствено описно име узорка које служи да се он идентификује.
  • Намера: Опис циља који стоји иза узорка и разлози за његово коришћење.
  • Познат и као: Остала имена узорка.
  • Мотивација: Опис проблема и контекст где је узорак применљив.
  • Применљивост: Ситуације у којима је узорак применљив; контекст узорка.
  • Структура: Графичка представа узорка. У ову сврху се могу користити дијаграми класа и/или остали дијаграми.
  • Учесници: Списак класа и објеката коришћених у узорку и њихових улога у дизајну.
  • Колаборација: Опис како класе и објекти коришћени у узорку комуницирају међусобно.
  • Консеквенце: Опис резултата и последица примене узорка, као и разумевање цене и добити примене узорка.
  • Имплементација: Опис имплементације узорка.
  • Примери кôда: Илустративни пример како се узорак може употребити у изворном кôду.
  • Примери употреба: Примери употреба узорка из стварног живота.
  • Повезани или слични узорци: Остали узорци који су на неки начин у вези са овим узорком. Дискусија између овог и осталих сличних узорака.

Референце

  1. ^ Robert C. Martin. Design Principles and Design Patterns Архивирано на сајту Wayback Machine (6. септембар 2015) (језик: енглески)
  2. ^ Meyer, Bertrand; Karine Arnout (Јул 2006). "Componentization: The Visitor Example" (језик: енглески). IEEE Computer 39 (7): 23–30.
  3. ^ Laakso, Sari A. (2003-09-16). "Collection of User Interface Design Patterns" Архивирано на сајту Wayback Machine (21. фебруар 2008) (језик: енглески). University of Helsinki, Dept. of Computer Science.
  4. ^ Heer, J.; M. Agrawala (2006). "Software Design Patterns for Information Visualization" (језик: енглески). IEEE Transactions on Visualization and Computer Graphics 12
  5. ^ Yahoo! Design Pattern Library Архивирано на сајту Wayback Machine (29. фебруар 2008) (језик: енглески)
  6. ^ Fowler, Martin (01.08.2006). "Writing Software Patterns" (језик: енглески)

Литература


Спољашње везе

Read other articles:

BabelPoster film BabelSutradaraAlejandro González IñárrituProduserAlejandro González IñárrituSteve GolinJon KilikDitulis olehGuillermo ArriagaCeritaAlejandro González IñárrituGuillermo ArriagaPemeranBrad PittCate BlanchettGael García BernalKōji YakushoAdriana BarrazaRinko KikuchiPenata musikGustavo SantaolallaSinematograferRodrigo PrietoPenyuntingStephen MirrioneDouglas CrisePerusahaanproduksiAnonymous ContentZeta FilmCentral FilmsMedia Rights CapitalDistributorParamount Vant...

 

Nakano 中野市Kota BenderaLambangLocation of Nakano in Nagano PrefectureNegara JepangWilayahChūbuPrefekturNaganoPemerintahan • WalikotaShigeru IkedaLuas • Total112,18 km2 (4,331 sq mi)Populasi (Oktober 1, 2019) • Total42.390 • Kepadatan378/km2 (980/sq mi)Zona waktuUTC+9 (Japan Standard Time)Simbol kota • PohonMalus domestica• BungaPaeonia lactiflora Rosa• BurungFalco tinnunculusNomor telepon0269-2...

 

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada Oktober 2020. Carl Johan HviidLahir(1899-06-27)27 Juni 1899Frederiksberg, DenmarkMeninggal21 Oktober 1964(1964-10-21) (umur 65)Roskilde, DenmarkPekerjaanPemeranTahun aktif1939–1964 Carl Johan Hviid (27 Juni 1899 – 21 Oktober 1964) adalah ...

Guntur Triaji Informasi pribadiNama lengkap Muhamad Guntur TriajiTanggal lahir 30 Juli 1993 (umur 30)Tempat lahir Lampung, IndonesiaTinggi 1,68 m (5 ft 6 in)Posisi bermain BekGelandangInformasi klubKlub saat ini PSIS SemarangNomor -Karier junior2010-2011 PSBL Lampung U-18[1]2012- Persija U-21Karier senior*Tahun Tim Tampil (Gol)2011-2012 Persiraja Banda Aceh[2] 2014- Persija Jakarta 0 (0)2014- → Villa 2000 (pinjaman) 6 (1)2015- PS TNI 5 (1)2018–2019 Per...

 

English military officer, governor of New York and New Jersey Cornbury redirects here. For the Oxfordshire estate, see Cornbury Park. The Right HonourableThe Earl of ClarendonPC1st Governor of New Jersey in British North AmericaIn office1701–1708MonarchAnneLieutenantCol. Richard IngoldesbyLieutenant-GovernorPreceded byOffice createdSucceeded byJohn, 4th Baron Lovelace14th colonial Governor of New YorkIn office1702–1708MonarchAnnePreceded byJohn NanfanSucceeded byJohn, 4th Baron Lovelace P...

 

العلاقات الألمانية الكورية الشمالية   ألمانيا   كوريا الشمالية تعديل مصدري - تعديل   السفارة الكورية الشمالية في برلين العلاقات الألمانية الكورية الشمالية هي العلاقات الثنائية بين ألمانيا وجمهورية كوريا الديمقراطية الشعبية، والمعروفة باسم كوريا الشمالية. ح...

John Stuart MillMill c. 1870 Anggota Parlemen Britania RayaMasa jabatan25 Juli 1865 – 17 November 1868Menjabat bersama Robert Grosvenor PendahuluDe Lacy EvansPenggantiWilliam Henry Smith (1825–1891)|William Henry Smith Informasi pribadiLahir(1806-05-20)20 Mei 1806Pentonville, London, InggrisMeninggal7 Mei 1873(1873-05-07) (umur 66)Avignon, FrancePartai politikLiberal Party (UK)|LiberalSuami/istriHarriet Taylor ​ ​(m. 1851; menin...

 

Pour les articles homonymes, voir Cox. Jacob Dolson Cox Jacob D. Cox, secrétaire à l'Intérieur. Fonctions Représentant des États-Unis 4 mars 1877 – 4 mars 1879(2 ans) Circonscription 6e district de l'Ohio Prédécesseur Frank H. Hurd Successeur William D. Hill 10e secrétaire à l'Intérieur des États-Unis 5 mars 1869 – 31 octobre 1870(1 an, 7 mois et 26 jours) Président Ulysses S. Grant Gouvernement Administration Grant Prédécesseur Orville Browning Suc...

 

Mythical food of the Greek gods For other uses, see Ambrosia (disambiguation). Look up ambrosia in Wiktionary, the free dictionary. The Food of the Gods on Olympus (1530), majolica dish attributed to Nicola da Urbino In the ancient Greek myths, ambrosia (/æmˈbroʊziə, -ʒə/, Ancient Greek: ἀμβροσία 'immortality') is the food or drink of the Greek gods,[1] and is often depicted as conferring longevity or immortality upon whoever consumed it.[2] It was brought to th...

W ou le Souvenir d'enfance Auteur Georges Perec Pays France Genre semi-autobiographie, semi-fiction Version originale Langue français Titre W ou le Souvenir d'enfance Version française Collection L'imaginaire Lieu de parution France Date de parution 1975 Nombre de pages 224 (pour l'édition Gallimard) modifier  W ou le Souvenir d'enfance est un ouvrage de Georges Perec paru en 1975. Le texte est un récit croisé, alternant une fiction (un chapitre sur deux, en italiques) et un r�...

 

Hutatma VeerVitthal Laxman Kotwalविठ्ठल लक्ष्मण कोतवालBorn1 December 1912Matheran, British IndiaDied2 January 1943 (aged 31)Siddhagad, Murbad, British IndiaCause of deathGunshot woundNationalityBritish IndianOther namesBhai Kotwal Hutatma Veer Bhai KotwalOccupation(s)Freedom fighter, revolutionary, lawyer, social workerOrganizationAzad DastaOther politicalaffiliationsIndian National CongressMovementIndian Independence MovementSpouseIndu Tirlapu...

 

Group formed from the action of one group on many copies of another, based on the semidirect product Algebraic structure → Group theoryGroup theory Basic notions Subgroup Normal subgroup Quotient group (Semi-)direct product Group homomorphisms kernel image direct sum wreath product simple finite infinite continuous multiplicative additive cyclic abelian dihedral nilpotent solvable action Glossary of group theory List of group theory topics Finite groups Cyclic group Zn Symmetric group Sn Al...

Pulau Kalang KudusNegaraIndonesiaGugus kepulauanKepulauan SeribuProvinsiDKI JakartaKabupatenKepulauan SeribuLuas- km²Populasi- Pulau Kalang Kudus adalah sebuah pulau yang terletak di Kepulauan Seribu di Daerah Khusus Ibukota Jakarta, Indonesia. Lihat pula Kabupaten Administratif Kepulauan Seribu Kepulauan Seribu Pranala luar Situs resmi Kabupaten Administratif Kepulauan Seribu Diarsipkan 2017-02-22 di Wayback Machine. lbsPulau di Kepulauan Seribu Pulau Air Besar Pulau Air Kecil Pulau Ay...

 

此條目之中立性有争议。其內容、語調可能帶有明顯的個人觀點或地方色彩。 (2011年6月)加上此模板的編輯者需在討論頁說明此文中立性有爭議的原因,以便讓各編輯者討論和改善。在編輯之前請務必察看讨论页。 格奥尔基·季米特洛夫保加利亚共产党中央委员会总书记任期1948年8月—1949年7月2日前任自己(第一书记)继任维尔科·契尔文科夫保加利亚共产党中央委员会第一�...

 

Chemical compound Ro20-8552Legal statusLegal status CA: Schedule IV DE: NpSG (Industrial and scientific use only) UK: Under Psychoactive Substances Act Identifiers IUPAC name 8-chloro-5-(2-fluorophenyl)-7-methyl-1,3-dihydro-1,4-benzodiazepin-2-one PubChem CID44366138ChemSpider23222080ChEMBLChEMBL356411CompTox Dashboard (EPA)DTXSID101337051 Chemical and physical dataFormulaC16H12ClFN2OMolar mass302.73 g·mol−13D model (JSmol)Interactive image SMILES CC1=CC2=C(C=C1Cl)NC(=O...

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada Oktober 2022. Istri Merdika merupakan sebuah surat kabar berbahasa Indonesia yang terbit di Bandung, Jawa Barat. Surat kabar ini terbit pertama kali pada 1929.[1] Surat kabar ini dipimpin oleh seorang perempuan bernama Siti Anah sebagai redaktur. Untuk pener...

 

British-American film studio and film production company This article is about the defunct PolyGram Filmed Entertainment whose assets belong to Universal Pictures. For the former record company and Universal Music Group's current film unit, see PolyGram. PolyGram Filmed EntertainmentPolyGram Filmed Entertainment logo, used from 1997 until 1999FormerlyFilmworks (1975–1976)Casablanca Record & Filmworks (1976–1980)PolyGram Pictures (1980–1983)Company typeSubsidiaryPredecessorCasablanca...

 

American journalist (1936–2021) This article is about the journalist. For the record label owner, see StandBy Records. For other people named Cornelius Sheehan, see Cornelius Sheehan (disambiguation). Neil SheehanBornCornelius Mahoney Sheehan(1936-10-27)October 27, 1936Holyoke, Massachusetts, U.S.DiedJanuary 7, 2021(2021-01-07) (aged 84)Washington, D.C., U.S.EducationHarvard UniversityOccupationJournalist Cornelius Mahoney Sheehan (October 27, 1936 – January 7, 2021) was an American ...

نوكيا 6310iمعلومات عامةالنوع هاتف محمول الصانع نوكيا الإصداراتنوكيا 6210 نوكيا 6600 تعديل - تعديل مصدري - تعديل ويكي بيانات نوكيا 6310i هو أحد أجهزة نوكيا، شركة الهواتف والتقنية النقالة.[1][2] يأتي هذا الجهاز مع شاشة نوعها 96 * 65 ذو لون واحد (مونوكروم). تم إصدار هذا الجهاز في 2002. �...

 

دابليو ودابليو بداية 2007  النوع إلكتروهاوس،  وهاوس هولندية  [لغات أخرى]‏  شركة الإنتاج أرمادا ميوزك  الموقع الرسمي الموقع الرسمي  تعديل مصدري - تعديل   دابليو ودابليو (W&W) هي فرقة دي جي ثنائية هولاندية تتكون من كل من ويليم فان هانيغيم (Willem van hanegem) و وار�...