www.wikidata.uk-ua.nina.az
Prototip angl Prototype tvirnij shablon proyektuvannya yakij dozvolyaye stvoryuvati kopiyi isnuyuchih ob yektiv takim chinom sho programnij kod ne zalezhit vid yih klasiv Cej shablon zastosovuyut u vipadku koli tip ob yektiv sho stvoryuyutsya zadanij ekzemplyarom prototipu sho vikoristovuyetsya dlya stvorennya novih ob yektiv shlyahom kopiyuvannya cogo prototipu Vin vikoristovuyetsya dlya uniknennya uspadkuvannya klasu sho stvoryuye ci ob yekti v kliyentskomu zastosuvanni yak ce vidbuvayetsya pri vikoristanni fabrichnogo metodu uniknennya vitrat sho vinikayut pri stvorenni novih ob yektiv standartnim sposobom tobto pri vikoristanni klyuchovogo slova new koli ce mozhe buti zanadto marnotratno dlya danogo zastosuvannya Dlya realizaciyi cogo shablonu neobhidno viznachiti abstraktnij bazovij klas interfejs yakij viznachaye chisto virtualnij metod clone Bud yakij klas sho potrebuye vikonannya funkcionalu polimorfnogo konstruktora bude uspadkovuvati cej bazovij abstraktnij klas i realizovuvati operaciyu clone Kliyent zamist togo shob pisati kod yakij bi vikoristovuvav operator new iz zhorstko vkazanim imenem klasu viklikaye metod clone dlya prototipu Prikladom situaciyi sho demonstruye shablon Prototip ye mitotichnij podil zhivih klitin sho prizvodit do stvorennya dvoh identichnih klitin tut prototip vidigraye vazhlivu rol v stvorenni povnoyi kopiyi samogo sebe Koli vidbuvayetsya dilennya klitini v rezultati utvoryuyutsya dvi identichni klitini iz identichnim genotipom Inshimi slovami klitina klonuye sama sebe 1 Zmist 1 Opis 1 1 Priznachennya 1 2 Zastosuvannya 1 3 Empirichni pravila 2 Struktura 3 Perevagi 4 Nedoliki 5 Vidnosini 6 Realizaciya 6 1 Priklad S 6 2 Priklad S 7 Primitki 8 Dzherela 9 LiteraturaOpis red Shablon proektuvannya Prototip 2 ye odnim iz dvadcyati troh dobre vidomih shabloniv iz knigi Bandi chotiroh GoF yakij opisuye yak virishiti rekursivni zadachi proektuvannya dlya stvorennya gnuchkogo i pridatnogo dlya povtornogo vikoristannya ob yektno oriyentovanogo programnogo zabezpechennya u takij sposib shob ob yekti bulo legshe realizovuvati zminyuvati testuvati i povtorno vikoristovuvati Priznachennya red Zadaye vidi ob yektiv sho stvoryuyutsya za dopomogoyu ekzemplyaru prototipu ta stvoryuye novi ob yekti shlyahom kopiyuvannya cogo prototipu Shablon proektuvannya Prototip dozvolyaye virishiti taki problemi yak 3 Yak ob yekti mozhut stvoryuvatisya u takij sposib sho te yakij ob yekt bude stvoreno mozhe buti viznacheno pid chas vikonannya kodu Yak mozhna stvoriti ekzemplyari dinamichno zavantazhenih ob yektiv Stvorennya novih ob yektiv napryamu za dopomogoyu klasu sho potrebuye vikoristovuye pevni ob yekti ye ne dostatno gnuchkim oskilki zmushuye priv yazati klas do pevnih ob yektiv pid chas kompilyaciyi i staye nemozhlivo viznachiti yaki ob yekti budut stvoreni pid chas vikonannya kodu Shablon proektuvannya prototip viznachaye sposib yak virishiti cyu zadachu Viznachiti ob yekt Prototype prototip sho stvoryuye kopiyu samogo sebe Stvoriti novij ob yekt shlyahom kopiyuvannya ob yektu Prototype Ce dozvolyaye stvoryuvati konfiguraciyi klasu iz riznimi ob yektami prototipu Prototype yaki budut kopiyuvatisya dlya stvorennya novih ob yektiv i navit bilshe ob yekti Prototype mozhut dodavatisya i znishuvatisya pid chas vikonannya Zastosuvannya red Slid vikoristovuvati shablon Prototip koli klasi sho instanciyuyutsya viznachayutsya pid chas vikonannya napriklad za dopomogoyu dinamichnogo zavantazhennya treba zapobigti pobudovi iyerarhij klasiv abo fabrik paralelnih iyerarhij klasiv produktiv ekzemplyari klasu mozhut znahoditis u odnomu z ne duzhe velikoyi kilkosti staniv Mozhe statisya sho zruchnishe vstanoviti vidpovidnu kilkist prototipiv ta klonuvati yih a ne instanciyuvati shorazu klas vruchnu v slushnomu stani Empirichni pravila red Inodi tvirni shabloni zbigayutsya odin z odnim isnuyut vipadki koli bilsh dorechno vikoristovuvati abo prototip abo abstraktnu fabriku A v inshih vipadkah voni dopovnyuyut odin odnogo abstraktna fabrika mozhe zberigati mnozhinu prototipiv z yakih bude stvoryuvatisya kopiya i povertatimutsya utvoreni ob yekti GoF s 126 Abstraktna fabrika budivnik i prototip mozhut v svoyij realizaciyi vikoristovuvati shablon Odinak GoF sc 81 134 Klasi abstraktnih fabrik chasto realizovani za dopomogoyu fabrichnih metodiv stvorennya cherez uspadkuvannya ale voni mozhut takozh realizovuvatisya za dopomogoyu prototipu stvorennya shlyahom deleguvannya en GoF s 95 Chasto proektuvannya pochinayetsya iz vikoristannya fabrichnogo metodu mensh skladno piddayetsya krashomu nalashtovuvannyu poshiryuyetsya na pidklasi i evolyucionuye v storonu abstraktnoyi fabriki prototipu abo budivnika bilsh gnuchki i bilsh skladni yaksho arhitektor kodu viyavlyaye de potrebuyetsya bilsha gnuchkist povedinki GoF s 136 Prototip ne potrebuye stvorennya pidklasiv ale potrebuye proceduri inicializaciyi Fabrichnij metod potrebuye stvorennya pidklasiv ale ne potrebu inicializaciyi GoF s 116 Arhitekturi yaki shiroko vikoristovuyut shabloni komponuvalnik ta dekorator takozh mozhut otrimati vigodu iz vikoristannya prototipu GoF s 126 Empirichne pravilo mozhe polyagati v tomu sho vam mozhe znadobitisya metod kopiyuvannya clone Ob yektu koli vi hochete stvoriti inshij ob yekt pid chas vikonannya kodu yakij ye povnoyu kopiyeyu togo ob yekta sho vi kopiyuyete Povna kopiya oznachaye sho vsi atributi novostvorenogo ob yektu budut takimi zh samimi yak i v togo ob yekta yakij vi klonuyete Yakbi zamist cogo vi stvoryuvali ekzemplyar danogo klasu vikoristovuyuchi klyuchove slovo new vi b otrimali ob yekt iz atributami sho mayut pochatkovi ne zadani znachennya Napriklad yaksho vi vikoristovuyete sistemu sho zdijsnyuye tranzakciyi iz bankivskim rahunkom tobi b vam znadobilosya stvoriti kopiyu ob yektu sho zberigaye v sobi informaciyu pro cej rahunok zdijsniti nad nim tranzakciyu a potim zaminiti originalnij ob yekt na zminenij V danomu vipadku vi b zahotili vikoristati metod clone zamist new Struktura red nbsp UML diagrama sho opisuye strukturu shablonu proyektuvannya PrototipPrototype prototip viznachaye interfejs dlya klonuvannya samogo sebe ConcretePrototype konkretnij prototip realizuye operaciyu klonuvannya samogo sebe Client kliyent stvoryuye novij ob yekt zvertayuchis do prototipu iz zapitom klonuvati sebe Perevagi red Stvoryuye gliboku kopiyu kompleksnoyi iyerarhiyi ob yektiv Zmenshennya navantazhennya inicializaciyi Bagatorazovi mozhlivosti optimizovani zusillya shodo koduvannya Sproshenij proces kopiyuvannya ob yektiv Nedoliki red Dodatkovi vitrati na rozrobku Potrebuye uvazhnosti i tochnosti pri glibokomu kopiyuvanniVidnosini red Kliyent zvertayetsya do prototipu shob toj stvoriv svogo klona Realizaciya red Priklad S red Priklad realizaciyi movoyu S include lt iostream gt include lt string gt include lt vector gt using namespace std struct Prototype virtual Prototype Clone 0 class Item public Prototype public int ID string Name public Item string strName Name strName ID GetNewID konstruktor kopiyuvannya Item Item amp item Name item Name ID GetNewID virtual Item virtual Prototype Clone return new Item this static int GetNewID static int ID 0 return ID void print Prototype p Item pItem dynamic cast lt Item gt p cout lt lt ID lt lt pItem gt ID lt lt endl cout lt lt Name lt lt pItem gt Name lt lt endl cout lt lt endl void main vector lt Prototype gt items Item Item Concrete Item klonuyemo ob yekt for int i 0 i lt 10 i items push back Item Clone viklik metodu klonuvannya Drukuyemo kloniv for int i 0 i lt 10 i print items i Priklad S red Priklad realizaciyi movoyu S using System using System IO using System Drawing using System Collections Generic using System Runtime Serialization Formatters Binary namespace PrototypePattern static class Prototype public static T DeepCopy lt T gt this T self var formatter new BinaryFormatter using var memoryStream new MemoryStream formatter Serialize memoryStream self memoryStream Seek 0 SeekOrigin Begin var clone formatter Deserialize memoryStream return T clone Serializable class TreePrefab private int height private Color color public TreePrefab int height Color color height height color color public void SetColor Color color color color class Program static void Main string args var treePrefab new TreePrefab 2 Color Green var forest new List lt TreePrefab gt for int i 0 i lt 10 i var tree treePrefab DeepCopy tree SetColor i 2 0 Color Green Color YellowGreen forest Add tree Primitki red Duell Michael July 1997 Non Software Examples of Design Patterns Object Magazine 7 5 54 ISSN 1055 3614 Erich Gamma Richard Helm Ralph Johnson John Vlissides 1994 Design Patterns Elements of Reusable Object Oriented Software Addison Wesley s 117ff ISBN 0 201 63361 2 The Prototype design pattern Problem Solution and Applicability w3sDesign com Arhiv originalu za 18 serpnya 2017 Procitovano 17 serpnya 2017 Dzherela red Design Patterns Elements of Reusable Object Oriented Software Arhivovano 9 listopada 2012 u Wayback Machine Literatura red Alan Shallouej Dzhejms R Trott Shablony proektirovaniya Novyj podhod k obektno orientirovannomu analizu i proektirovaniyu Design Patterns Explained A New Perspective on Object Oriented Design M Vilyams 2002 288 s ISBN 0 201 71594 5 Otrimano z https uk wikipedia org w index php title Prototip shablon proyektuvannya amp oldid 40439702