Знімок (шаблон проєктування)

Зні́мок (англ. Memento) — це шаблон проєктування, що належить до класу шаблонів поведінки і забезпечує можливість відновлення об'єкта до збереженого (попереднього) стану.

Призначення

Не порушуючи інкапсуляції, фіксує та виносить за межі об'єкта його внутрішній стан так, щоб пізніше можна було відновити з нього об'єкт.

Застосування

Слід використовувати шаблон Знімок у випадках, коли:

  • необхідно зберегти миттєвий знімок стану об'єкта (або його частини), щоб згодом об'єкт можна було відтворити у тому ж самому стані;
  • безпосереднє вилучення цього стану розкриває деталі реалізації та порушує інкапсуляцію об'єкта.

Структура

UML діаграма, що описує структуру шаблону проєктування Знімок
  • Memento — контекст:
    • зберігає внутрішній стан об'єкта Originator. Обсяг інформації, що зберігається, може бути різним та визначається потребами хазяїна;
    • забороняє доступ усім іншим об'єктам окрім хазяїна. По суті знімок має два інтерфейси. Опікун Caretaker користується лише вузьким інтерфейсом знімку — він може лише передавати знімок іншим об'єктам. Навпаки, хазяїн користується широким інтерфейсом, котрий забезпечує доступ до всіх даних, необхідних для відтворення об'єкта (чи його частини) у попередньому стані. Ідеальний варіант — коли тільки хазяїну, що створив знімок, відкритий доступ до внутрішнього стану знімку;
  • Originator — хазяїн:
    • створює знімок, що утримує поточний внутрішній стан;
    • використовує знімок для відтворення внутрішнього стану;
  • CareTaker — опікун:
    • відповідає за зберігання знімка;
    • не проводить жодних операцій над знімком та не має уявлення про його внутрішній зміст.

Відносини

UML діаграма, що описує відносини між об'єктами шаблону проєктування Знімок
  • опікун запитує знімок у хазяїна, деякий час тримає його у себе, опісля повертає хазяїну. Іноді цього не відбувається, бо хазяїн не має необхідності відтворювати свій попередній стан;
  • знімки пасивні. Тільки хазяїн, що створив знімок, має доступ до інформації про стан.

Переваги

  • Забезпечує спосіб запису внутрішнього стану об'єкта в окремому об'єкті, не порушуючи закону дизайну.
  • Усуває потребу в багаторазовому створенні того ж об'єкта з єдиною метою збереження його стану.
  • Спрощує Originator, даючи відповідальність за зберігання Memento серед Caretaker.

Недоліки

  • Збереження та відновлення стану може зайняти багато часу.
  • Об'єкт Memento повинен забезпечувати два типи інтерфейсів: вузький інтерфейс для Caretaker і широкий інтерфейс для Originator.
  • Дозволяє іншому об'єкту довільно змінити стан об'єкта

Реалізація

C++

Джерела

Література

Алан Шаллоуей, Джеймс Р. Тротт. Шаблоны проектирования. Новый подход к объектно-ориентированному анализу и проектированию = Design Patterns Explained: A New Perspective on Object-Oriented Design. — М. : «Вильямс», 2002. — 288 с. — ISBN 0-201-71594-5.


Read other articles:

Kai BirdBiografiKelahiran2 September 1951 (72 tahun)Eugene Data pribadiPendidikanUniversitas Northwestern Medill School of Journalism (en) Carleton College (en) . sejarah Kodaikanal International School (en) KegiatanPekerjaanSejarawan, biografer, wartawan dan documentary participant (en) Penghargaan(2006)  Pulitzer Prize for Biography (en)  Guggenheim Fellowship (en) Situs web<span%20class= penicon%20data-bridge-edit-flow=single-best-value> Laman resmi Kai Bird adalah seorang ...

 

ASL Airlines Belgium IATA ICAO Kode panggil 3V TAY QUALITY Didirikan1999PenghubungLiege AirportArmada28Tujuan70Perusahaan indukTNT N.V. Post GroupKantor pusatLiège, BelgiumTokoh utamaNiky Terzakis (managing director)Situs webhttp://www.tntairways.com ASL Airlines Belgium,[1] sebelumnya TNT Airways, adalah maskapai kargo dan carter yang berbasis di Liege airport, Belgia. TNT Airways adalah cabang dari TNT N.V. dan didirikan pada tahun 1999. Maskapai ini merupakan bagian dari jaringan ...

 

Ukrainian political activist, Ukrainian nationalist, and guerrilla fighter Mykola LebedМикола ЛебідьLebed after his arrest for his role in the murder of Bronisław Pieracki (June 24, 1934)Born(1909-01-11)January 11, 1909Novi Strilyshcha, Bibrka County, Galicia and Lodomeria, Austria-HungaryDiedJuly 18, 1998(1998-07-18) (aged 89)Pittsburgh, Pennsylvania, United StatesNationalityUkrainianOther namesMaksym Ruban, Marko or Yevhen SkyrbaOccupationPolitician Gestapo wanted pos...

Royaume de Chypre 1192–1489 Armoiries de Janus de Chypre Royaume de Chypre (1360).Informations générales Statut Royaume Capitale Nicosie Langue(s) Latin Religion christianismes catholique latin et orthodoxe grec Entités précédentes : Chypre (Empire byzantin) Entités suivantes :  Chypre vénitienne modifier - modifier le code - voir Wikidata (aide) Le royaume franc (ou latin) de Chypre est l'État latin d'Orient le plus récent quant à sa création, et celui qui subsis...

 

Men's marathonat the Games of the IX OlympiadBoughera El Ouafi, winnerVenueOlympisch Stadion, AmsterdamDates5 AugustCompetitors69 from 23 nationsWinning time2:32:57Medalists Boughera El Ouafi  France Manuel Plaza  Chile Martti Marttelin  Finland← 19241932 → Athletics at the1928 Summer OlympicsTrack events100 mmenwomen200 mmen400 mmen800 mmenwomen1500 mmen5000 mmen10,000 mmen110 m hurdlesmen400 m hurdlesmen3000 msteeplechasemen4 × 100 m relaymen...

 

Disambiguazione – Se stai cercando l'unica frazione di Villanterio in provincia di Pavia, vedi Monte Bolognola. Bolognolacomune Bolognola – Veduta LocalizzazioneStato Italia Regione Marche Provincia Macerata AmministrazioneSindacoCristina Gentili (lista civica) dal 6-6-2016 (2º mandato dal 4-10-2021) TerritorioCoordinate42°59′36.24″N 13°13′43.68″E / 42.9934°N 13.2288°E42.9934; 13.2288 (Bolognola)Coordinate: 42°59′36.24�...

This article possibly contains original research. Please improve it by verifying the claims made and adding inline citations. Statements consisting only of original research should be removed. (October 2017) (Learn how and when to remove this message) Hypothetical travel between galaxies Part of a series onSpaceflight History History of spaceflight Space Race Timeline of spaceflight Space probes Lunar missions Mars missions Applications Communications Earth observation Exploration Espionage M...

 

第三十二届夏季奥林匹克运动会柔道比賽比賽場館日本武道館日期2021年7月24日至31日項目數15参赛选手393(含未上场5人)位選手,來自128(含未上场4队)個國家和地區← 20162024 → 2020年夏季奥林匹克运动会柔道比赛个人男子女子60公斤级48公斤级66公斤级52公斤级73公斤级57公斤级81公斤级63公斤级90公斤级70公斤级100公斤级78公斤级100公斤以上级78公斤以上级团体混...

 

西維珍尼亞 美國联邦州State of West Virginia 州旗州徽綽號:豪华之州地图中高亮部分为西維珍尼亞坐标:37°10'N-40°40'N, 77°40'W-82°40'W国家 美國加入聯邦1863年6月20日(第35个加入联邦)首府(最大城市)查爾斯頓政府 • 州长(英语:List of Governors of {{{Name}}}]]) • 副州长(英语:List of lieutenant governors of {{{Name}}}]])吉姆·賈斯蒂斯(R)米奇·卡邁克爾(...

Geographical features of Tibet This article is about the geography of the ethno-cultural region of Tibet, which includes, but is not the same as the Tibet Autonomous Region of China. For the non-political geographical region, see Tibetan Plateau. Yamdrok Lake The geography of Tibet consists of the high mountains, lakes and rivers lying between Central, East and South Asia. Traditionally, Western (European and American) sources have regarded Tibet as being in Central Asia, though today's maps ...

 

Lake in Northwest Territories, Canada Point LakePoint LakeLocationNorthwest TerritoriesCoordinates65°14′N 113°09′W / 65.233°N 113.150°W / 65.233; -113.150 (Point Lake)[1]Basin countriesCanadaSurface area701 km2 (271 sq mi)Surface elevation375 m (1,230 ft)References[2] Point Lake is a lake in the Northwest Territories, Canada.[1] Map See also Geography portalCanada portal List of lakes in the Northwes...

 

Moroccan footballer (1948–1996) Kacem Slimani Slimani at the 1970 FIFA World CupPersonal informationFull name Kacem SlimaniDate of birth 1 July 1948Place of birth MoroccoDate of death November 30, 1996(1996-11-30) (aged 48)Position(s) DefenderSenior career*Years Team Apps (Gls)1967-1972 RS Settat 1972–73 Paris FC 1973–75 RS Settat 1975–77 US Nœux-les-Mines International career Morocco *Club domestic league appearances and goals Kacem Slimani (1 July 1948 – 30 November 1996...

Life support provider based in Kentucky This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages) This article contains weasel words: vague phrasing that often accompanies biased or unverifiable information. Such statements should be clarified or removed. (July 2010) This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. U...

 

Office of the United States Department of Justice Parts of this article (those related to Current political appointees at the Office of Legal Counsel) need to be updated. Please help update this article to reflect recent events or newly available information. (July 2021) United States Department of JusticeOffice of Legal CounselSeal of the U.S. Department of JusticeOffice overviewFormed1934; 90 years ago (1934)JurisdictionFederal government of the United StatesHeadquartersRo...

 

Women's national volleyball team representing Poland PolandAssociationPolski Związek Piłki SiatkowejHead coachStefano LavariniFIVB ranking3 (as of 30 May 2024)Uniforms Home Away Third Summer OlympicsAppearances3 (First in 1964)Best result (1964, 1968)World ChampionshipAppearances10 (First in 1952)Best result (1952)World CupAppearances2 (First in 2003)Best result6th (2007)European ChampionshipAppearances29 (First in 1949)Best result (2003, 2005)www.pzps.pl (in Polish) Honours Olympic Games 1...

Eruption of electromagnetic radiation For other uses, see Solar flare (disambiguation). An X5.4-class solar flare causing blooming, vertical streaking, and diffraction patterns to form in the image taken by the 131 Å (13.1 nm) sensor aboard the Solar Dynamics Observatory on 6 March 2012 Part of a series of articles aboutHeliophysicsHeliospheric current sheet Heliosphere Sun Solar System Space climate Space weather Fundamentals Plasma Flux tube Magnetic reconnection Particle acceler...

 

Election in Alaska Main article: 1960 United States presidential election 1960 United States presidential election in Alaska November 8, 1960 1964 →   Nominee Richard Nixon John F. Kennedy Party Republican Democratic Home state California Massachusetts Running mate Henry Cabot Lodge Jr. Lyndon B. Johnson Electoral vote 3 0 Popular vote 30,953 29,809 Percentage 50.94% 49.06% Borough and Census Area ResultsState House District Results[a] Nixon  &...

 

Untuk petinju Inggris, lihat Rowan Anthony Williams. Yang Mulia dan Yang Termulia BangsawanThe Lord Williams dari OystermouthPC FBA FRSL FLSWMantan Uskup Agung CanterburyGerejaGereja InggrisProvinsi gerejawiProvinsi CanterburyKeuskupanKeuskupan Canterbury (delegasi)Masa jabatan2 Desember 2002 (terpilih)– 31 Desember 2012 (mengundurkan diri)PendahuluGeorge CareyPenerusJustin WelbyJabatan lainMaster Magdalene2013–kiniUskup Agung Wales2000–2002Uskup Monmouth1992–2002Imam...

يفتقر محتوى هذه المقالة إلى الاستشهاد بمصادر. فضلاً، ساهم في تطوير هذه المقالة من خلال إضافة مصادر موثوق بها. أي معلومات غير موثقة يمكن التشكيك بها وإزالتها. (ديسمبر 2018) 1901 في ألمانيامعلومات عامةالسنة 1901 1900 في ألمانيا 1902 في ألمانيا تعديل - تعديل مصدري - تعديل ويكي بيانات سنوا...

 

Politics of Tunisia Member State of the African Union Member State of the Arab League Constitution Current constitution Constitution of 2022 Past constitution Constitution of 1959 Constitution of 2014 Executive President (List) Kais Saied Prime Minister (List) Ahmed Hachani Cabinet Legislature National Council of Regions and Districts Speaker Assembly of the Representatives of the People Speaker Judiciary Court of Cassation Elections Recent elections Presidential: 20192024 Parliamentary: 201...