Шаблони за дизайн

Шаблоните за дизайн (англ: Software design pattern) представляват концепция, предназначена за разрешаване на често срещани проблеми в обектно ориентираното програмиране. Тази концепция предлага стандартни решения за архитектурни и концептуални проблеми в компютърното програмиране.

Тук не става въпрос за конкренти алгоритми или част от програмен код. Шаблоните за дизайн са независими от програмния език. Те представляват архитектурни решения на вече познати и много често срещани проблеми в програмирането. Може да се каже, че шаблоните за дизайн представляват средство за прилагане на световния опит на програмисти и аналитици.

Шаблони

Създаващи шаблони

Наименование Описание В книгата Шаблони за дизайн (Design Patterns) В книгата Code Complete
Абстрактна Фабрика (Abstract Factory) Предоставя интерфейс за създаване на семейства от обекти без да са посочени техните конкретни класове. Ok Ok
Метод Фабрика (Factory method) Дефинира интерфейс за създаване на обекти, но оставя на подкласовете да решат от кои класове да направят инстанции. Ok Ok
Строител (Builder) Разделя създаването на сложен обект от неговото представяне, така че един и същи процес да може да създава обекти с различно представяне. Ok Не
Късна инициализация (Lazy initialization) Отлагане във времето на създаването на обект, изчисляването на стойност или на някакъв друг отнемащ ресурси процес, до момента в който не е нужен. Не Не
Object pool Предотвратява скъпо заделяне или освобождаване на ресурс чрез рециклиране на обекти с кратък живот. Не Не
Прототип (Prototype) Определя прототипна инстанция на някакъв вид обект и създава нови обекти чрез копиране на прототипа. Ok Не
Сек (Singleton) Осигурява клас, който може да има само една-единствена инстанция и предоставя глобален достъп до нея. Ok Ok

Структурни шаблони

Наименование Описание В книгата Шаблони за дизайн (Design Patterns) В Code Complete
Адаптер (Adapter) Конвертира интерфейса на даден клас към друг интерфейс, който е очакван от клиента. Адаптерът оставя класовете да работят заедно. Това е необходимо заради несъвместимостта им. Ok Ok
Мост (Bridge) Отделя абстракцията от нейната имплементация, така че двете могат да бъдат променяни независимо. Ok Ok
Композиция (Composite) Композиране на обекти в дървовидни структури за представяне на йерархии от елементи. Ok Ok
Декоратор (Decorator) Динамично добавя допълнителни отговорности на обект, като запазва интерфейса му. Декораторите предоставят гъвкава алтернатива на наследяването за разширяване на функционалността. Ok Ok
Фасада (Facade) Предоставя уеднаквен интерфейс за редица интерфейси. Фасадата дефинира интерфейс от по-високо ниво, което прави по-лесна употребата на подсистемата. Ok Ok
Миниобект (Flyweight) Използва поделяне за ефективна поддръжка на голям брой малки обекти. Ok Не
Пълномощно (Proxy) Предоставя заместник на друг обект, за да се контролира достъпа до него. Ok Не

Поведенчески шаблони

Наименование Описание В книгата Шаблони за дизайн (Design Patterns) В Code Complete
Верига отговорности (Chain of Responsibility) Избягва обвързването на изпращача на дадена заявка с получателя ѝ, като дава възможност на няколко обекта да обработят заявката. Свързва заедно приемащите обекти и предава заявката по веригата, докато някой от тях я обработи. Ok Не
Команда (Command) Капсулира дадена заявка във вид на обект. Това позволява свързването на клиента с различни заявки или опашки, както и поддръжка на функция за връщане на промените (undo). Ok Не
Интерпретатор (Interpreter) Даден език дефинира своята граматика, също така и интерпретатор, който използва граматиката, за да интерпретира изречения написани на този език. Ok Не
Итератор (Iterator) Предоставя начин за последователен достъп до елементите на обект, без да е нужна вътрешна информация за обекта. Ok Ok
Посредник (Mediator)

Дефинира обект който капсулира връзките между списък от обекти. Медиаторът поддържа шаблона Разхлабени връзки (loose coupling) като предпазва директно обвързване между обектите, давайки възможност това да се случва на по-високо ниво.

Ok Не
Спомен (Memento) Без да нарушава капсулацията на даден обект, прихваща и изважда вътрешното му състояние с цел да бъде възвърнато това състояние в по-късен етап. Ok Не
Празен обект (Null Object) Проектиран е да действа като стойност по подразбиране на даден обект. Не Не
Наблюдател (Observer) Дефинира зависимост „един към много“ между обектите, така че ако един обект промени състоянието си, всички зависими от него обекти да бъдат известени и обновени автоматично. Ok Ok
Състояние (State) Позволява на даден обект да променя поведението си при промяна на вътрешното му състояние. Изглежда все едно обектът е променил класа си. Ok Не
Стратегия (Strategy) Дефинира семейство от капсулирани алгоритми и ги прави взаемозаменими. Стратегията позволява промяна на алгоритмите, независимо от клиента, който ги използва. Ok Ok
Спецификация (Specification) Не Не
Шаблонен метод (Template method) Дефинира скелет на алгоритъм в дадена операция, като оставя някои стъпки за подкласовете. Шаблонният метод позволява на подкласовете да предефинират някои стъпки на даден алгоритъм, без да променят структурата му. Ok Ok
Посетител (Visitor) Посетителят предоставя възможност за дефиниране на нова операция, без да се променя класа на елемента върху който се извършва операцията. Ok Не

Архитектурни шаблони

Източници

  • Шаблони за дизайн, Design PatternsЕрик Гама, Ричард Хелм, Ралф Джонсън, 2005, издателство СофтПрес. ISBN 954-685-352-6
  Тази страница частично или изцяло представлява превод на страницата Software design pattern в Уикипедия на английски. Оригиналният текст, както и този превод, са защитени от Лиценза „Криейтив Комънс – Признание – Споделяне на споделеното“, а за съдържание, създадено преди юни 2009 година – от Лиценза за свободна документация на ГНУ. Прегледайте историята на редакциите на оригиналната страница, както и на преводната страница, за да видите списъка на съавторите. ​

ВАЖНО: Този шаблон се отнася единствено до авторските права върху съдържанието на статията. Добавянето му не отменя изискването да се посочват конкретни източници на твърденията, които да бъдат благонадеждни.​

Read other articles:

Kabupaten Kulon Progo di Daerah Istimewa Yogyakarta Berikut adalah daftar kapanewon dan kalurahan di Kabupaten Kulon Progo, Yogyakarta, Indonesia. Kabupaten Kulon Progo memiliki 12 kapanewon, 1 Kelurahan, dan 87 kalurahan. Pada tahun 2017, jumlah penduduk mencapai 445.655 jiwa yang tersebar di wilayah seluas 586,28 km² dengan tingkat kepadatan penduduk 760 jiwa/km².[1][2] Daftar kapanewon dan kalurahan/kelurahan di Kabupaten Kulon Progo, adalah sebagai berikut: Kode Kemendag...

 

SMA Negeri 1 kota CirebonSMOA TJIREBONLogo Resmi Terbaru Logo Ketika SMUInformasiDidirikan1944 (SMOA TJIREBON) 1952 (SMUN CIREBON)JenisSekolah NegeriAkreditasiA [1]Nomor Statistik Sekolah301026301001Nomor Pokok Sekolah Nasional20222364MaskotBurung Hantu Motto : Wakbadjra Elmuning Ciswa ( Ilmu Itu Perisai Siswa )Kepala SekolahIbu Hj. Naning Priyatnaningsih, S.Pd., M.Pd. ( 6 Desemberber 2021 - Sekarang)Jurusan atau peminatanMIPA dan IPSRentang kelasX, XI, XIIKurikulumKurikulum...

 

Location of Talbot County in Maryland This is a list of the National Register of Historic Places listings in Talbot County, Maryland. This is intended to be a complete list of the properties and districts on the National Register of Historic Places in Talbot County, Maryland, United States. Latitude and longitude coordinates are provided for many National Register properties and districts; these locations may be seen together in a map.[1] There are 62 properties and districts listed ...

South Australian Film CorporationIndustryEntertainmentHeadquartersAdelaide, AustraliaWebsitewww.safilm.com.au South Australian Film Corporation (SAFC) is a South Australian Government statutory corporation established in 1972 to engage in film production and promote the film industry, located in Adelaide, South Australia. The Adelaide Studios are managed by the South Australian Film Corporation for the use of the South Australian film industry. History 1972–2000 The South Australian Film C...

 

Natural fiber (hair) of the Angora goat For the band, see Mohair (band). Look up mohair in Wiktionary, the free dictionary. Mohair wool An Angora goat Mohair (pronounced /ˈmoʊhɛər/) is a fabric or yarn made from the hair of the Angora goat (not Angora wool from the fur of the Angora rabbit). Both durable and resilient, mohair is lustrous with high sheen,[1] and is often blended to add these qualities to a textile. Mohair takes dye exceptionally well. It feels warm in winter due to...

 

† Человек прямоходящий Научная классификация Домен:ЭукариотыЦарство:ЖивотныеПодцарство:ЭуметазоиБез ранга:Двусторонне-симметричныеБез ранга:ВторичноротыеТип:ХордовыеПодтип:ПозвоночныеИнфратип:ЧелюстноротыеНадкласс:ЧетвероногиеКлада:АмниотыКлада:Синапсиды�...

Ethnicity classification used in the 2011 United Kingdom Census This article is about one of the white ethnicity classifications used in the United Kingdom census. For the broad racial group, see white people in the United Kingdom. For the history of immigration from Ireland, regardless of race or ethnicity, see Irish migration to Great Britain. White IrishDistribution by regional area at the 2011 censusTotal populationWhite Irish 585,177 (Excluding Northern Ireland)[1][2] Reg...

 

Сибирский горный козёл Научная классификация Домен:ЭукариотыЦарство:ЖивотныеПодцарство:ЭуметазоиБез ранга:Двусторонне-симметричныеБез ранга:ВторичноротыеТип:ХордовыеПодтип:ПозвоночныеИнфратип:ЧелюстноротыеНадкласс:ЧетвероногиеКлада:АмниотыКлада:СинапсидыКла�...

 

This biography of a living person needs additional citations for verification. Please help by adding reliable sources. Contentious material about living persons that is unsourced or poorly sourced must be removed immediately from the article and its talk page, especially if potentially libelous.Find sources: Chris Thompson English musician – news · newspapers · books · scholar · JSTOR (April 2012) (Learn how and when to remove this message) Chris...

Konica Autoreflex TC (1976–1982)[1] The Auto-Reflex and Autoreflex is a series of 35mm SLR cameras made by Konica from 1965 to 1988.[2] All these models have the Konica AR bayonet. Konica AR-mount The Konica AR camera lens mount was introduced in 1965 with the Konica Autoreflex (Autorex on the Japanese market), along with a range of lenses. It features a comparably short flange focal distance of 40.50 mm for a 35 mm film SLR camera. Its diameter is 47 mm.[...

 

Herman Johannes Menteri Pekerjaan Umum dan Rekonstruksi Indonesia ke-7Masa jabatan6 September 1950 – 27 April 1951PresidenSoekarnoPerdana MenteriMohammad NatsirPendahuluMananti SitompulPenggantiUkar BratakusumahRektor Universitas Gadjah Mada ke-2Masa jabatan1961–1966PendahuluSardjitoPenggantiNazir Alwi Informasi pribadiLahir(1912-05-28)28 Mei 1912Rote, Hindia BelandaMeninggal17 Oktober 1992(1992-10-17) (umur 80)Yogyakarta, IndonesiaKebangsaanIndonesiaSuami/istriAnnie...

 

土库曼斯坦总统土库曼斯坦国徽土库曼斯坦总统旗現任谢尔达尔·别尔德穆哈梅多夫自2022年3月19日官邸阿什哈巴德总统府(Oguzkhan Presidential Palace)機關所在地阿什哈巴德任命者直接选举任期7年,可连选连任首任萨帕尔穆拉特·尼亚佐夫设立1991年10月27日 土库曼斯坦土库曼斯坦政府与政治 国家政府 土库曼斯坦宪法 国旗 国徽 国歌 立法機關(英语:National Council of Turkmenistan) ...

ماريانو راخويMariano Rajoy (بالإسبانية: Mariano Rajoy)‏  رئيس وزراء إسبانيا في المنصب21 ديسمبر 2011 – 1 يونيو 2018 العاهل فيليب السادس خوسيه لويس ثباتيرو بيدرو سانشيز زعيم المعارضة في المنصب17 أبريل 2004 – 21 ديسمبر 2011 رئيس الوزراء خوسيه لويس ثباتيرو خوسيه لويس ثباتيرو ألفريدو بيريث روبالك...

 

مجلس الشيوخ (هولندا) التأسيس 1815  البلد هولندا  جزء من برلمان هولندا  [لغات أخرى]‏  الأعضاء 75   الموقع الإلكتروني الموقع الرسمي  تعديل مصدري - تعديل     لمعانٍ أخرى، طالع مجلس الشيوخ (توضيح). مجلس الشيوخ هو مجلس الشيوخ في البرلمان الهولندي ، والولايا...

 

Buddhist philosopher For the 10th century teacher from Suvarṇadvīpa, see Dharmakīrtiśrī. DharmakirtiPortrait of Dharmakirti in silver, c. 15th–16th century, at the Cleveland Museum of Art.PersonalReligionBuddhismFlourished6th or 7th centuryNotable work(s)Pramanavarttika This article contains special characters. Without proper rendering support, you may see question marks, boxes, or other symbols. Part of a series onBuddhism Glossary Index Outline History Timeline The Buddha Pre-...

GondangrejoKecamatanPeta lokasi Kecamatan GondangrejoNegara IndonesiaProvinsiJawa TengahKabupatenKaranganyarPemerintahan • Camat-Populasi • Total60,251 (2.003) jiwaKode Kemendagri33.13.13 Kode BPS3313130 Luas56,8 km²Desa/kelurahan13 Gondangrejo (bahasa Jawa: ꦒꦺꦴꦤ꧀ꦝꦤꦔꦿꦺꦗ, translit. Gondhangreja) adalah sebuah kecamatan di Kabupaten Karanganyar, Jawa Tengah. Batas Wilayah Utara Kecamatan Kalijambe, Kabupaten Sragen dan Kecamatan Plupu...

 

BumblebeeTokoh TransformersInformasiAfiliasiAutobotNama JepangBumbleSub-groupMini-botsThrottlebots (sbg Goldbug) Pretenders Action Masters Go-Bots Deluxe VehiclesFungsiEspionage Espionage DirectorSpyPangkat7SemboyanThe least likely can be the most dangerous. (Bumblebee) To know others you must know yourself first. (Goldbug) Data is power. (Classic)Model alternatifCybertronian Car1952 Volkswagen BeetleAMC Pacer Motorcycle and Sidecar Train EngineChrysler ME Four-Twelve (Classic Legends) Bumble...

 

1952 single by Carl SmithAre You Teasing MeSingle by Carl Smithfrom the album Sentimental Songs B-sideIt's a Lovely, Lovely WorldReleased1952Recorded1952GenreCountryLength2:56LabelColumbiaSongwriter(s)Charlie Louvin, Ira LouvinCarl Smith singles chronology Let Old Mother Nature Have Her Way (1951) Are You Teasing Me (1952) It's a Lovely, Lovely World (1952) Are You Teasing Me is a song written by the Louvin Brothers (Charlie and Ira), sung by Carl Smith, and released on the Columbia label (ca...

Suburb of Melbourne, Victoria, AustraliaAbbotsfordMelbourne, VictoriaJohnston Street, AbbotsfordAbbotsfordCoordinates37°48′11″S 145°00′07″E / 37.803°S 145.002°E / -37.803; 145.002Population9,088 (SAL 2021)[1]Established1870sPostcode(s)3067Area1.8 km2 (0.7 sq mi)Location2 km (1 mi) from MelbourneLGA(s)City of YarraState electorate(s)RichmondFederal division(s)Melbourne Suburbs around Abbotsford: Clifton Hill Clifton Hil...

 

  至少有一個或以上联合国會員不承認的聯合國會員國   至少有一個或以上聯合國會員承認的非聯合國會員國   僅受到非聯合國會員承認的非聯合國會員國 有限承認國家是指世界上许多已经宣布自身是主權國家的獨立政治實體,正尋求国际社会将其作为法律上的主权国家予以外交承认,但却并未因此得到普遍承认。这些实体通常在事实上拥有其领土的�...