«Դեկորատոր (նախագծման ձևանմուշ)»–ի խմբագրումների տարբերություն

Content deleted Content added
չ clean up, փոխարինվեց: : → ։ (20), ` → ՝ oգտվելով ԱՎԲ
Տող 13.
}}
 
'''Դեկորատոր''' ({{lang-en|Decorator}}), [[Կառուցվածքային նախագծման ձևանմուշներ|կառուցվածքային]] [[Նախագծման ձևանմուշներ|նախագծման ձևանմուշ]], որը նախատեսված է օյեկտներին դինամիկ կերպով նոր վարք ավելացնելու համար:համար։ Դեկորատոր ձևանմուշը դասի ֆունկցիոնալությունը մեծացնելու նպատակով ենթադասերի ստեղծման ճկուն այլընտրանք է հանդիսանում:հանդիսանում։<ref>{{cite book|last=Gamma|first=Erich|title=Design Patterns|year=1995|publisher=Addison-Wesley Publishing Co, Inc.|location=Reading, MA|isbn=0-201-63361-2|pages=175ff|display-authors=etal}}</ref>
 
==Ընդհանուր հասկացողություններ==
Տող 23.
== Հիմնական բնութագիրներ ==
=== Խնդիր ===
Օբյեկտը, որը պետք է օգտագործվի, իրականցնում է հիմնական ֆունկցիաները:ֆունկցիաները։ Բայց կարող է անհրաժեշտ լինել նրան ավելացնել որոշակի լրացուցիչ ֆունկցիոնալություն, որը կարող է օգտագործել հիմնական ֆունկցիոնալությունից առաջ, հետո և նույնիսկ հիմնական ֆունկցիոնալության փոխարեն:փոխարեն։
 
=== Լուծման տարբերակ ===
Դեկորատորը օբյեկտի ֆունկցիոնալության ընդլայնումը դիտարկում է առանց ենթադասերի ստեղծման:ստեղծման։
 
=== Մասնակիցներ ===
<code>ConcreteComponent</code> դաս, որտեղ Դեկորատորի միջոցով ավելացվում է նոր ֆունկցիոնալություն:ֆունկցիոնալություն։ Որոշ դեպքերում բազային ֆունկցիոնալությունը ներկայացվում է դասերով, որոնք ստեղծվել են <code>ConcreteComponent</code> դասի կողմից:կողմից։ Այդ դեպքերում <code>''ConcreteComponent''</code> արդեն կոնկրետ դաս չէ, այլ աբստրակտ է:է։ <code>''Component''</code> աբստրակտ դասը տալիս է ինտերֆեյս բոլոր այդ դասերի օգտագործման համար:համար։
 
=== Հետևություն ===
# Ավելացվող ֆունկցիոնալությունը իրագործվում է ոչ մեծ օբյեկտներում:օբյեկտներում։ Առավելությունը կայանում է նրանում, որ այդ ֆունկցիոնալությունը դինամիկ կերպով ավելանում է <code>ConcreteComponent</code> հիմնական ֆունկցիոնալությունից առաջ կամ հետո:հետո։
# Թույլ է տալիս դասերի վերին հիերարխիայում խուսափել ֆունկցիոնալությունների գերծանրաբեռնումից
# Դեկորատորը և նրա բաղկացուցիչ մասերը իդենտիկ չեն:չեն։
 
=== Իրականացում ===
Ստեղծվում է աբստրակտ դաս, որն իրենից ներկայացնում է ելակետային դաս:դաս։ Ինչպես նաև ստեղծվում են նրո դասեր, որոնք ավելացվում են ֆունկցիայի դասի մեջ:մեջ։ Դաս-դեկորատորներում նոր ֆունկցիաները կանչվում են ըստ հարկ եղած հերթականության`հերթականության՝ հերթական օբյեկտի կանչից առաջ կամ հետո:հետո։
 
Ցանկության դեպքում հնարավոր է նաև օգտագործել ելակետային դասը (առանց ֆունկցիոնալության ընդարձակման), եթե նրա օբյեկտի վրա պահպանվել է հղումը:հղումը։
 
== Ձևանմուշի կիրառություն ==
[[Windows]]-ի կորիզում դրայվեր-ֆիլտրերն ([[Windows Driver Model|WDM (Windows Driver Model)]] ճարտարապետություն) իրենցից ներկայացնում են դեկորատորներ:դեկորատորներ։ Չնայած նրան, որ WDM-ն իրականացրած է օբյեկտային [[C (ծրագրավորման լեզու)|C]] ծրագրավորման լեզվով, նրանցում հստակորեն հետևել են դեկորատոր ձևանմուշի կիրառմանը:կիրառմանը։
 
[[Component Object Model|COM (Component Object Model)]] ճարտարապետությունը չի սպասարկում ժառանգումը:ժառանգումը։ Դրա փոխարեն այն առաջարկում է դեկորատորներ (կոնկերտ ճարտարապետության մեջ այն կոչվում է «ագրեգացիա»):։
 
==Օրինակներ==