Легковаговик (шаблон проєктування)

У програмуванні, легковаговик[1][2](англ. flyweight pattern) — шаблон проєктування, за яким створюється об'єкт, що мінімізує використання пам'яті розподіляючи стільки даних скільки це можливо між іншими подібними об'єктами; це спосіб використання великої кількості об'єктів, коли просте повторювання їх представлення зайняло б неприпустиму кількість пам'яті. Часто деякі частини, що зберігають стан об'єктів можуть бути спільними, і загальною практикою є тримати їх у деякий зовнішній структурі даних і передавати їх до об'єктів тимчасово коли вони використовуються.

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

Іншим прикладом застосування цього шаблону є метод стиснення текстових рядків шляхом інтернування[en].

Призначення

Використовується для ефективної підтримки (в першу чергу для зменшення затрат пам'яті) великої кількості дрібних об'єктів.

Опис

Шаблон Легковаговик (Flyweight) використовує загальнодоступний легкий об'єкт (flyweight, легковаговик), який одночасно може використовуватися у великій кількості контекстів. Стан цього об'єкта поділяється на внутрішній, що містить інформацію, незалежну від контексту, і зовнішній, який залежить або змінюється разом з контекстом легковаговика. Об'єкти клієнтів відповідають за передачу зовнішнього стану легковаговика, коли йому це необхідно.

Переваги

  • Зменшує кількість об'єктів, що підлягають обробці.
  • Зменшує вимоги до пам'яті.

Недоліки

  • Переміщення стану поза об'єктом розбиває інкапсуляцію та може бути менш ефективним, ніж збереження власного поля

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

Шаблон Легковаговик можна використовувати коли:

  • В програмі використовується велика кількість об'єктів.
  • Затрати на збереження високі через велику кількість об'єктів.
  • Більшість станів об'єктів можна зробити зовнішніми.
  • Велика кількість груп об'єктів може бути замінена відносно малою кількістю загальнодоступних об'єктів, однократно видаливши зовнішній стан.
  • Програма не залежить від ідентичності об'єктів. Оскільки об'єкти-легковаговики можуть використовуватися колективно, то тести на ідентичність будуть повертати значення "істина" ("true") для концептуально різних об'єктів.

Діаграма UML

Реалізація

C++

C#

Java

Джерела

  • Design Patterns: Elements of Reusable Object-Oriented Software (PDF) (англ.). Архів оригіналу (PDF) за 9 листопада 2012. Процитовано 16 лютого 2013.

Література

  • Будай, Андрій (2012). Дизайн-патерни — просто, як двері. с. 90. Архів оригіналу за 10 жовтня 2020. Процитовано 3 січня 2018.
  • Алан Шаллоуей, Джеймс Р. Тротт. Шаблоны проектирования. Новый подход к объектно-ориентированному анализу и проектированию = Design Patterns Explained: A New Perspective on Object-Oriented Design. — М. : «Вильямс», 2002. — 288 с. — ISBN 0-201-71594-5.

Зноски

  1. Архівована копія. Архів оригіналу за 14 червня 2020. Процитовано 11 травня 2020.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  2. Будай, 2012, с. 42.

Read other articles:

Airport in Salt Lake County, Utah South Valley Regional Airport2006 USGS airphotoIATA: noneICAO: noneFAA LID: U42SummaryAirport typePublicOperatorSalt Lake City Department of AirportsLocationWest Jordan, UtahElevation AMSL4,607 ft / 1,404.2 mCoordinates40°37′10″N 111°59′34″W / 40.61944°N 111.99278°W / 40.61944; -111.99278[1]Websitehttps://slcairport.com/about-the-airport/general-aviation/south-valley-regional-airport/MapU42Location of...

 

Lembah Hunker Creek, Klondike Klondike adalah bagian dari wilayah Yukon di barat laut Kanada, sebelah timur dari perbatasan Alaska. Terletak di antara Sungai Klondike, sungai kecil yang memasuki Sungai Yukon dari sebelah timur Kota Dawson. Klondike terkenal karena peristiwa Demam Emas Klondike, yang dimulai pada tahun 1897 dan berlangsung sampai 1899. Emas telah ditambang terus menerus di daerah itu kecuali sedang terjadi proses istirahat pada akhir 1960-an dan awal 1970-an. Nama Klondike ber...

 

Questa voce o sezione sugli argomenti battaglie e seconda guerra mondiale non cita le fonti necessarie o quelle presenti sono insufficienti. Commento: bibliografia scarsa e che fa ancora uso di Biagi (un semplice giornalista); note in numero insufficiente: voce non affidabile. Puoi migliorare questa voce aggiungendo citazioni da fonti attendibili secondo le linee guida sull'uso delle fonti. Segui i suggerimenti dei progetti di riferimento 1, 2. Operazione Frühlingserwachenparte del fro...

Стиль этой статьи неэнциклопедичен или нарушает нормы литературного русского языка. Статью следует исправить согласно стилистическим правилам Википедии. DHT (англ. distributed hash table — «распределённая хеш-таблица») — это класс децентрализованных распределённых сист�...

 

Untuk permainan video tahun 1997, lihat Grand Theft Auto (permainan video). Penyuntingan Artikel oleh pengguna baru atau anonim untuk saat ini tidak diizinkan.Lihat kebijakan pelindungan dan log pelindungan untuk informasi selengkapnya. Jika Anda tidak dapat menyunting Artikel ini dan Anda ingin melakukannya, Anda dapat memohon permintaan penyuntingan, diskusikan perubahan yang ingin dilakukan di halaman pembicaraan, memohon untuk melepaskan pelindungan, masuk, atau buatlah sebuah akun. Grand...

 

Brian Dennehy Brian Dennehy (/ˈdɛnəhi/; 9 Juli 1938 – 15 April 2020) adalah seorang pemeran Amerika Serikat. Ia memulai debut di pertelevisian sejak 1977. Kala itu, ia setidaknya sudah tampil dalam 10 serial seperti Kojak, MASH, dan Lou Grant. Ia meraih Tony Awards pada 1999 dan 2003 setelah berperan sebagai Willy Loman dalam film Death of a Salesman karya Arthur Miller serta James Tyrone dalam Long Day's Journey Into Night karya Eugene O'Neill. Setelah itu, ia menerima nas...

Pour les articles homonymes, voir Le Perche. Ne doit pas être confondu avec Parc naturel régional du Perche ou Perche (province). Perche Paysage du Perche autour du manoir de Courboyer en 2007. Pays France Région Centre-Val de LoireNormandiePays de la Loire Départements Eure-et-LoirOrneSartheLoir-et-Cher Eure Villes principales Nogent-le-Rotrou, La Ferté-Bernard, Mondoubleau, Bellême, Mortagne-au-Perche, Saint-Calais Verneuil-sur-Avre Coordonnées 48° 06′ 13″ nord, ...

 

Judith Malina jouant Maudie dans Maudie and Jane (2008). Le Living Theatre est une troupe de théâtre expérimental libertaire[1] créée en 1947 à New York par Judith Malina (1926-2015), metteuse en scène d'avant-garde, et Julian Beck (1925-1985), scénographe et dramaturge[2]. À travers des œuvres libertaires engagées fortement influencées par Antonin Artaud et par le théâtre épique, le Living a permis un renouvellement des formes théâtrales et a eu une influence importante sur ...

 

Comune in Apulia, ItalyStatteComuneComune di StatteLocation of Statte StatteLocation of Statte in ItalyShow map of ItalyStatteStatte (Apulia)Show map of ApuliaCoordinates: 40°34′N 17°13′E / 40.567°N 17.217°E / 40.567; 17.217CountryItalyRegionApuliaProvinceTaranto (TA)Government • MayorFrancesco AndrioliArea[1] • Total67.32 km2 (25.99 sq mi)Elevation138 m (453 ft)Population (31 December 2014)[2 ...

This is a list of foreign ministers in 2017.[1] Africa  Algeria Ramtane Lamamra (2013–2017) Abdelkader Messahel (2017–2019)  Angola - Georges Rebelo Chicoti (2010–2017) Manuel Domingos Augusto (2017–2020)  Benin - Aurélien Agbénonci (2016–2023)  Botswana - Pelonomi Venson-Moitoi (2014–2018)  Burkina Faso - Alpha Barry (2016–2021)  Burundi - Alain Aimé Nyamitwe (2015–2018)  Cameroon- Lejeune Mbella Mbella (2015–present)  Cap...

 

Superfamily of insects For the Pandanus planthopper, see Jamella australiae and Pandanus tectorius § Ecology. PlanthopperTemporal range: Carboniferous–Recent PreꞒ Ꞓ O S D C P T J K Pg N Flatida rosea (Flatidae)adults and nymphs Scientific classification Domain: Eukaryota Kingdom: Animalia Phylum: Arthropoda Class: Insecta Order: Hemiptera Suborder: Auchenorrhyncha Infraorder: FulgoromorphaEvans, 1946 Families See text A planthopper is any insect in the infraorder Fulgoromorpha, ...

 

2015 Washington wildfiresSmoke plume over the Wolverine Fire on August 4StatisticsTotal fires1,541[1]Total area1,005,423 acres (406,880 ha)[1]ImpactsDeaths3[2]Non-fatal injuries4[3]Damage$253 million [4]Season← 2014 2016 → The 2015 wildfire season was the largest in Washington state history,[5] with more than one million acres (400,000 ha; 1,600 sq mi) burning across the state from June to September.[1...

Lambang kotamadya Lokasi Tokke Untuk desa di Indonesia, lihat Tokke, Malangke, Luwu Utara. Tokke adalah kotamadya yang terletak di Telemark, Norwegia. Kotamadya ini berpenduduk 2.417 jiwa (2006) dan wilayah seluas 980 km². Ibukota kotamadya terletak di Dalen. Secara resmi, Tokke menggunakan bahasa Norwegia ragam Nynorsk. Demografi Pada tahun 2004, 2,9% penduduk kotamadya lahir di luar Norwegia. Jumlah penduduk Tahun 1769 1801 1815 1825 1835 1845 1855 1865 1875 1890 1900 Penduduk 1.815 2...

 

American politician Milton KrausMember of the U.S. House of Representativesfrom Indiana's 11th districtIn officeMarch 4, 1917 – March 3, 1923Preceded byGeorge W. RauchSucceeded bySamuel E. Cook Personal detailsBorn(1866-06-26)June 26, 1866Kokomo, Indiana, U.S.DiedNovember 18, 1942(1942-11-18) (aged 76)Wabash, Indiana, U.SPolitical partyRepublicanEducationUniversity of Michigan Milton Kraus (June 26, 1866 – November 18, 1942) was an American lawyer and politician ...

 

Portuguese football club Football clubCD Santo António NordestinhoFull nameClube Desportivo Santo António NordestinhoFounded1973GroundCampo de Jogos de Sto AntónioSanto António de Nordestinho, Azores PortugalChairmanValdir Pacheco RaposoLeagueCurrently inactive Home colours Clube Desportivo Santo António Nordestinho (known as CD Santo António Nordestinho or St. Ant. Nordestinho), is a Portuguese football club based in Santo António de Nordestinho on the island of São Miguel in the Azo...

Atmospheric illumination by the Sun below the horizon For other uses, see Twilight (disambiguation). Twilight is the time period between dawn and sunrise, or between sunset and dusk. Morning twilight: astronomical, nautical, and civil stages at dawn. The apparent disk of the Sun is shown to scale.[1] Evening twilight: civil, nautical, and astronomical stages at dusk. The solar disk is shown to scale. Twilight is light produced by sunlight scattering in the upper atmosphere, when the S...

 

関西テレビ放送 > 関西テレビライフ 株式会社関西テレビライフKTVLIFE CORP.種類 株式会社市場情報 非上場略称 KTVL本社所在地 日本〒530-0053大阪府大阪市北区末広町3番3号設立 1974年4月1日業種 サービス業法人番号 1120001062596 事業内容 フィットネスクラブ・スイミングスクールの経営代表者 代表取締役社長 古市忠嗣資本金 2億円主要株主 関西テレビ放送(100%)主要子会...

 

23°N 15°W / 23°N 15°W / 23; -15 جهة الداخلة وادي الذهب   علمعلم شعار   الإحداثيات 23°N 15°W / 23°N 15°W / 23; -15   [2] تاريخ التأسيس 2015  سبب التسمية الداخلة،  ووادي الذهب  تقسيم إداري  البلد المغرب الجمهورية العربية الصحراوية الديمقراطية[3] ...

Untuk kegunaan lain, lihat America America (disambiguasi). America, AmericaPoster filmSutradaraElia KazanProduserElia KazanSkenarioElia KazanPemeranStathis GiallelisNaratorElia KazanPenata musikManos HadjidakisSinematograferHaskell WexlerPenyuntingDede AllenDistributorWarner Bros.Tanggal rilis 15 Desember 1963 (1963-12-15) Durasi174 menitNegaraAmerika SerikatBahasaInggris America America (judul Britania The Anatolian Smile—sebuah rujukan kepada sebuah pengetahuan terkini dari sen...

 

世論では第二次世界大戦後から日本は追従するようになったと思われがちだが、明治時代や大正時代から既にアメリカ合衆国及び大英帝国に追従する国だったと言われていた(これはハワイ併合時(1897年)の風刺画である)。アメリカ合衆国(アンクル・サム)が 「なぜこの奇妙な猟犬(大日本帝国)はどこに行くにも私(アメリカ合衆国)の後を追うの?」、イギリ...