نموذج التصميم ديكور

نموذج التصميم ديكور يهدف إلى توفير وسيلة لربط الحالات الجديدة والسلوك إلى كائن بطريقة ديناميكية.[1][2][3] والكائن لا يعلم انه يجري عليه عملية ديكور "Decoration"، الأمر الذي يجعل هذا النموذج مفيد لتطور النظم. وهناك نقطة رئيسية في تنفيذ هذا النموذج وهو انه يعمل على تزيين ال class الاصلي وحتى المورث منه على حد سواء.

توضيح

نموذج التصميم ديكور يأخذ كائن موجود ويضيف إليه. وكمثال على ذلك، هناك طرق عديدة للإضافة على الصورة، مثل وضع الحدود من حولها أو تحديد العلامات ذات الصلة إلى المحتوى. يمكن عرض هذه الإضافات على رأس الصورة.

التصميم

يمكن تحديد العناصر الاساسية في نموذج التصميم ديكور في رسم تخطيطي UML كما هو موضح بالشكل ميديا:التالي|File:Decorator UML class diagram.svg|ميديا:التالي ولان هذا هو تصميمنا الأول سوف نشرحه تفصيليا. نقوم بعرض الاجزاء الاساسية في التصميم وهي:

المكونات

صف اصلي من كائن معين سوف يضاف عليه أو يتم تعديله ومن الممكن ان يكون أكثر من صف.

العمليات

العمليات في الواجهة IComponent والتي من الممكن ان تستبدل.

IComponent

هو الواجهة الذي سيقوم بتحديد هوية ال صفوف التي سيتم تزيينها.

Decorator

وهي ال صف المشتقة من الواجهة السابقة والذي يقوم باضافة السلوك والديكور. ومن الممكن ان يكون أكثر من صف

نرى في منتصف هذا التصميم طبقة ال decorator ومرتبطة بعلاقتين مع الواجهة IComponent العلاقة الأولى:

تبدأ بسهم منقط من decorator لـIComponent وهي تشير إلى ان الـ Decorator موروثة من IComponent وهذا يعني ان كائن decorator من الممكن ان تستخدم في المكان الذي تتوقع فيه استخدم الواجهة وبالتالي يمكن لل client استخدام Component وDecorator ديكور بالتبادل، هذا هو اساس نموذج التصميم ديكور.

العلاقة الثانية مرسومة على شكل معيين صغير على الـ Decorator ومرتبطة بـ Icomponent هذا يشير إلى أن الـ Decorator من الممكن ان يكون مرتبط بمورث واحد أو أكثر من الـ Component ومن الممكن في أي لحظة لواردنا جعل العمليات مختلفة ان نقوم بعمل override وبهذه لطريقة يكون قد تحقق الهدف من النموذج

مثال

عند الرغبة في وضع اضافتين على صورة مثلا نقوم بعمل الاتي

Photo photo = new Photo( );
Tag  foodTag = new
Tag (photo, "Food",1);
Tag colorTag = new Tag (foodTag, "Yellow",2);

في البداية قمنا بعمل صورة من ال class photo بعد ذلك قمنا بالإضافة عليه بوضع foodTag ثم قمنا بوضع إضافة أخرى على الكائن foodTag عن طريق ال colorTag

في معظم النماذج التي سنواجهها، يمكن للعناصر الظهور في اشكال مختلفة. وللحفاظ على مخططات UML واضحة وبسيطة ليس علينا اظهار كل الخيارات فيها ولكن علينا ان ندقق ما إذا كانت الخيارات مؤثرة في التصميم ام لا.

تعدد المكونات Multiple components

ان مختلف المكونات التي تطابق الواجهة من الممكن أيضا ان «يضاف اليها» فمثلا من الممكن ان يكون لدينا صفوف ترسم اشخاص ومنازل وسفن من خلاص اشكال هندسية وخطوط فهذه الصفوف من الممكن أيضا ان يضاف عليها حالات من خلال الـ decorator. وهذا هو عمل الـ IComponent

الديكورات المتعددة Multiple decorators

كما اننا من الممكن ان نورث الواجهة لاكثر من صف كذلك يمكننا ان يكون لدينا أكثر من واجهة ولكل واحد منهم وظيفة. فاحدهما يضيف بوردر والاخر يضيف نص على الصورة وهكذا.

العمليات المتعددة Multiple operations

فالعمليات التي تجري داخل الصف أو الالكائن بعض منها جزء من الكائن الاصلي والبعض من الواجهة.

المحتوى Implementation

نموذج أو نمط decorator هو الذي لا يرتبط باي واجهة ليستمد حالات أخرى behaviors. فلو ان التاج صف (وهي التي تقوم باضافة ال decor على العنصر) ملزمة بان ترث من الواجهة للصورة مثلا لكي تحوي ميثود أو اثنين فنحن بذلك نحمل التاج صف كل مايوجد في صف الصورة لكي نستفيد بهاتين الدالتين مما يجعل الكائن كبير جدا بدون داعي.

مثال عملي

يبدا المثال كما رئينا بواجهة IComponent صف بسيط موروثة من هذا واجهة وأيضا يوجد اثنين من الصف Decorator والموروثة ايصا من نفس الـ IComponent

الصف DecoratorA هي واضحة وبيسطة حيث انها لم تقوم سوى باضافة نص على العنصر الاصلي. اما الصف DecoratorB فقد قامت بنفس الوظائف الموجودة في الواجهة ولكن اضافت عليه انها اضافت متغير جديد لم يكن موجود في الواجهة وكذلك اضافت دالة جديدة. وكما رئينا في دالة الـ Main فقد قمنا بالعمل على الصف component أولا بدون أاستخدام DecoratorA أو DecoratorB عليها ثم قمنا بعد ذلك بعرض كيفية إضافة الديكور عليها وتاثيره على اصل الصف.

ديكورات المنازل

عند البدء بتصميم منزلك لا شك أنك تبحث عن ديكورات منازل كأول خطوة، هناك أشكال وألوان عديدة لديكورات المنازل ولكل شخص ذوقه، ديكورات المنازل تتيح لك رؤية التصميم الذي ترغم ببنائه أو أن تقوم باختيار مخططات المنازل والشكل الذي تريده عليه.

using System;

class DecoratorPattern

{

// Decorator Pattern Judith Bishop Dec 2006
// Shows two decorators and the output of various
// combinations of the decorators on the basic component
interface IComponent
{
string Operation();
}
////////////////////////////////////////////////////////////
class Component: IComponent
{
public string Operation()
{
return "I am walking ";
}
}

///////////////////////////////////////////

class DecoratorA: IComponent
{
IComponent component;
public DecoratorA(IComponent c)
{
component = c;
}
public string Operation()
{
string s =component.Operation();
s += "and listening to Classic FM ";
return s;
}
}

///////////////////////////////////////////

class DecoratorB : IComponent
{
IComponent component;
public string addedState = "past the Coffee Shop ";
public DecoratorB(IComponent c)
{
component = c;
}
public string Operation()
{
string s =component.Operation();
s += "to school ";
return s;
}
public string AddedBehavior()
{
return "and I bought a cappuccino ";
}
}
/// ///////////////////////////////////////////
class Client
{
static void Display(string s, IComponent c)
{
Console.WriteLine(s + c.Operation());
}
static void Main()
{
Console.WriteLine("Decorator Pattern\n");
IComponent component = new Component();
Display("1. Basic component: ", component);
Display("2. A-decorated : ", new DecoratorA(component));
Display("3. B-decorated
", new DecoratorB(component));
Display("4. B-A-decorated : ", new DecoratorB(
new DecoratorA(component)));
// Explicit DecoratorB
DecoratorB b = new DecoratorB(new Component());
Display("5. A-B-decorated : ", new DecoratorA(b));
// Invoking its added state and added behavior
Console.WriteLine("\t\t\t" + b.addedState + b.AddedBehavior());
}
}

}

/* Output

76 Decorator Pattern

77

78 1. Basic component: I am walking

79 2. A-decorated : I am walking and listening to Classic FM

80 3. B-decorated : I am walking to school

81 4. B-A-decorated : I am walking and listening to Classic FM to school

82 5. A-B-decorated : I am walking to school and listening to Classic FM

83 past the Coffee Shop and I bought a cappuccino

84 */ </syntaxhighlight>

المراجع

  1. ^ "The Decorator design pattern - Problem, Solution, and Applicability". w3sDesign.com. مؤرشف من الأصل في 2018-10-15. اطلع عليه بتاريخ 2017-08-12.
  2. ^ Freeman، Eric؛ Freeman، Elisabeth؛ Sierra، Kathy؛ Bates، Bert (2004). Hendrickson، Mike؛ Loukides، Mike (المحررون). "Head First Design Patterns". O'Reilly. ج. 1: 243, 252, 258, 260. ISBN:978-0-596-00712-6. مؤرشف من الأصل (paperback) في 2019-07-05. اطلع عليه بتاريخ 2012-07-02. {{استشهاد بدورية محكمة}}: الاستشهاد بدورية محكمة يطلب |دورية محكمة= (مساعدة)
  3. ^ "How to Implement a Decorator Pattern". مؤرشف من الأصل في 2015-07-07.


Read other articles:

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada Maret 2016. PecikoNegaraIndonesiaWilayahLaut Cina SelatanDarat/Lepas pantaiLepas pantaiOperatorPertaminaSejarah ladangDitemukan1977Awal produksi1999ProduksiPerkiraan kandungan gas150×10^9 m36,2×10^12 cu ft Ladang gas Peciko adalah ladang gas alam da...

 

 

Crystal OceanieLahir30 April 1989 (umur 34)Jakarta, IndonesiaKebangsaanIndonesiaDikenal atasPembawa Acara, Aktris, Model Crystal Oceanie (lahir 30 April 1989) merupakan seorang pembawa acara dan aktris Indonesia. Dia memulai karier saat menjadi model di Soopergirl Hunt tahun 2014. Dia membawakan acara utamanya seperti kuis Piala Dunia FIFA 2018, One Pride Quiz dan masih banyak lagi. Acara TV Kuis Piala Dunia FIFA 2018 (Trans TV) One Pride Quiz (tvOne) Uang Kaget (GTV) Ayo Hidup Sehat (t...

 

 

Bupati AlorLambang Kabupaten AlorPetahanaZeth Sony Libing (Pj.)sejak 13 November 2023Masa jabatan5 TahunDibentuk12 Juni 1959; 64 tahun lalu (1959-06-12)Pejabat pertamaSyarif Abdullah (ad interim);John Bastian Denu (definitif)Situs webalorkab.go.id Berikut adalah Daftar Bupati Kabupaten Alor dari masa ke masa.[1] No. Potret Nama (masa hidup) Mulai menjabat Selesai menjabat Prd. Jabatan Sebelumnya Wakil Bupati Ket. sebelum dilakukan pemilihan bupati Alor, Syarif Abdullah menja...

American politician Senator Mills redirects here. For other uses, see Senator Mills (disambiguation). 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 relies largely or entirely on a single source. Relevant discussion may be found on the talk page. Please help improve this article by introducing citations to additional sources.Find sources: Roger Q. Mills – ne...

 

 

Ancient substance found in peat bogs Bog butter made in 2012 for the Oxford Symposium on Food and Cookery. Bog butter from A Descriptive Catalogue of the Antiquities in the Museum of the Royal Irish Academy, 1857 Bog butter is an ancient waxy substance found buried in peat bogs, particularly in Ireland and Scotland. Likely an old method of making and preserving butter, some tested lumps of bog butter were made of dairy, while others were made of animal fat.[1] History Bog butter is fo...

 

 

Questa voce o sezione sugli argomenti stati scomparsi e Stati Uniti d'America non cita le fonti necessarie o quelle presenti sono insufficienti. 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. America britannica America britannica - Localizzazione Dati amministrativiNome ufficialeBritish America and the British West Indies Lingue ufficialiinglese, francese Lingue pa...

Disambiguazione – Stampacchia rimanda qui. Se stai cercando altri significati, vedi Stampacchia (disambigua). Guido Stampacchia, a Tokyo, nel 1969 (foto di Konrad Jacobs) Guido Stampacchia (Napoli, 26 marzo 1922 – Parigi, 27 aprile 1978) è stato un matematico italiano. Indice 1 Biografia 2 Riconoscimenti 3 Opere 4 Note 5 Bibliografia 6 Altri progetti 7 Collegamenti esterni Biografia Dopo gli studi classici al Liceo Ginnasio Giambattista Vico di Napoli, iniziò gli studi universi...

 

 

American politician and diplomat (1864–1928) For other people named Robert Lansing, see Robert Lansing (disambiguation). Robert Lansing42nd United States Secretary of StateIn officeJune 24, 1915 – February 13, 1920Acting: June 9 – 24, 1915PresidentWoodrow WilsonPreceded byWilliam Jennings BryanSucceeded byBainbridge Colby3rd Counselor of the United States Department of StateIn officeApril 1, 1914 – June 23, 1915PresidentWoodrow WilsonPreceded byJohn Bassett MooreSucc...

 

 

Sculpture in Manhattan, New York, U.S. 107th Infantry MemorialThe memorial in 2008ArtistKarl Morningstar IllavaYear1927 (1927) --MediumBronzeSubjectSeven World War I-era soldiersDimensions300 cm (9'11 ft × 15'8 ft × 10 ft)LocationManhattan, New YorkCoordinates40°46′09″N 73°58′10″W / 40.76927°N 73.96937°W / 40.76927; -73.96937 The 107th Infantry Memorial is an outdoor bronze sculpture and memorial located at t...

Sir Cloudesley Shovell, 1650-1707. Minyak di atas kanvas Sir Cloudesley Shovell (skt. November 1650-22 atau 23 Oktober 1707) adalah seorang perwira Angkatan Laut Inggris, Laksamana Besar. Berasal dari barisan dan berpartisipasi dalam banyak pertempuran penting di akhir abad ke-XVII dan awal abad ke-XVIII, ia adalah pahlawan rakyat Inggris[1]. Kariernya berakhir dengan bencana Scilly pada 1707, mewakili Rochester, di Dewan Rakyat Britania Raya pada 1695 hingga kematiannya. Monumen Shov...

 

 

Philosophical view rejecting objectivity For the physics theory, see Theory of relativity. This article has an unclear citation style. The references used may be made clearer with a different or consistent style of citation and footnoting. (September 2009) (Learn how and when to remove this message) Part of a series onEpistemology Outline Category Index Schools Coherentism Contextualism Dogmatism Empiricism Fallibilism Foundationalism Infallibilism Infinitism Naturalism Perspectivism Pragmati...

 

 

Legislative district of the Philippines Politics of the Philippines Government Constitution of the Philippines Charter Change Laws Legal codes Taxation Executive President of the Philippines Bongbong Marcos (PFP) Vice President of the Philippines Sara Duterte (HNP) Cabinet (lists) Executive departments Local government Legislature Congress of the Philippines 19th Congress Senate President Migz Zubiri (Independent) House of Representatives Speaker Martin Romualdez (Lakas) Districts Party-list ...

Positions on the morality of capital punishment 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 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. (February 2008) (Learn how and when to remove this message) This article contains too many or overly l...

 

 

TJ41Stasiun Ippommatsu一本松駅Pintu masuk Stasiun Ippommatsu pada Januari 2014Lokasi80-3 Nakashinden, Tsurugashima-shi, Saitama-ken 350-2226JepangKoordinat35°56′25″N 139°22′13″E / 35.94028°N 139.37028°E / 35.94028; 139.37028Koordinat: 35°56′25″N 139°22′13″E / 35.94028°N 139.37028°E / 35.94028; 139.37028Operator Tobu RailwayJalurTJ Jalur Tobu OgoseLetak2.8 km dari SakadoJumlah peron2 peron sampingJumlah jalur2Informasi...

 

 

German defence manufacturing company Heckler & Koch GmbHCompany typePrivate (GmbH)IndustryDefenseFounded28 December 1949; 74 years ago (28 December 1949)FoundersEdmund HecklerTheodor KochAlex SeidelHeadquartersOberndorf am Neckar, GermanyArea servedWorldwideKey peopleRainer Runte (Chairman)ProductsFirearms, weaponsRevenue €305.1 million (2022)[1]Operating income €46.23 million (2022)[1]Net income €50.639 million (2022)[1]Total assets €328.194 m...

تحتوي هذه المقالة اصطلاحات معربة غير مُوثَّقة. لا تشمل ويكيبيديا العربية الأبحاث الأصيلة، ويلزم أن تُرفق كل معلومة فيها بمصدر موثوق به. فضلاً ساهم في تطويرها من خلال الاستشهاد بمصادر موثوق بها تدعم استعمال المصطلحات المعربة في هذا السياق أو إزالة المصطلحات التي لا مصادر ل...

 

 

Period of wanted sleeplessness Not to be confused with Virgil. This article is about a period of intentional sleeplessness. For all other usages, see Vigil (disambiguation). Vigil, tacuinum sanitatis casanatensis (14th century)A Knight's Vigil by John Pettie A vigil, from the Latin vigilia meaning 'wakefulness' (Greek: pannychis,[1] παννυχίς or agrypnia[2] ἀγρυπνία),[3] is a period of purposeful sleeplessness, an occasion for devotional watching, or an...

 

 

ГородМирутангл. Meerut 28°59′24″ с. ш. 77°42′00″ в. д.HGЯO Страна  Индия Штат Уттар-Прадеш Мэр Харикант Ахлувалия История и география Площадь 141,94 км² Высота центра 218 м Часовой пояс UTC+5:30 Население Население 1 424 908[1] человек (2011) Цифровые идентификаторы Теле�...

Magallana angulata Huître portugaise.Classification Règne Animalia Embranchement Mollusca Classe Bivalvia Sous-classe Ordre Ostreoida Famille Ostreidae Genre Magallana EspèceMagallana angulata(Lamarck, 1819) Magallana angulata (anciennement Crassostrea angulata), l’huître portugaise, est une espèce d’huîtres d'origine asiatique. Probablement introduite au XVIIe siècle au Portugal, elle a été cultivée en Europe à la fin du XIXe siècle. Après une épizootie due à un...

 

 

2014年冬季奥林匹克运动会塔吉克斯坦代表團塔吉克斯坦国旗IOC編碼TJKNOC塔吉克斯坦共和國國家奧林匹克委員會網站www.olympic.tj(英文)(塔吉克语)2014年冬季奥林匹克运动会(索契)2014年2月7日至2月23日運動員1參賽項目1个大项历届奥林匹克运动会参赛记录(总结)夏季奥林匹克运动会19962000200420082012201620202024冬季奥林匹克运动会20022006201020142018–2022其他相关赛事参赛记录...