Creational Patterns

الگوهای طراحی Creational فرایند نمونه سازی (instantiation) را انتزاعی می کند. انها به ایجاد یک سیستم مستقل از چگونگی ایجاد، ترکیب و نمایندگی اشیاء کمک می کنند. یک کلاس الگوی Creational از ارث بری برای تغییر کلاسی که نمونه سازی شده است استفاده می کند، در حالی که یک شی الگوی Creational، نمونه سازی را به شیء دیگری واگذار می کند.

الگوهای طراحی Creational به دلیل این بسیار مهمند چون سیستم ها بیشتر از وراثت کلاس ها بر روی ترکیب اشیا وابسته هستند. همان طور که می دانید، تاکید بر این هست که از hard coding به سمت تعریف مجموعه رفتار پایه ای که با ترکیب آنها بتوان رفتارهای پیچیده تری را ایجاد کرد، برویم.

دو موضوع تکراری در این الگوها وجود دارد. اول، همه انها دانش را در مورد کلاس های concrete مشخصی که سیستم از آنها استفاده می کند، کپسوله می کنند. دوم، انها چگونگی ایجاد نمونه هایی از این کلاس ها و قرار دادن کنار هم آنها را مخفی می کنند. تنها چیزی که سیستم در مورد اشیاء می داند، رابط های (interfaces) انها است که توسط کلاس های انتزاعی(abstract) تعریف شده است. در نتیجه، الگوهای Creational به شما انعطاف پذیری زیادی در مورد چه چیزی ایجاد می شود، چه کسی ان را ایجاد می کند، چگونه و چه زمانی ایجاد شده است را می دهد . انها به شما اجازه می دهند یک سیستم را با اشیا “محصول” پیکربندی کنید که به طور گسترده ای در ساختار و عملکرد متفاوت است. پیکربندی می تواند استاتیک (یعنی مشخص شده در زمان کامپایل) یا پویا (در زمان اجرا) باشد.

گاهی اوقات الگوهای Creational رقبای هم هستند. به عنوان مثال، مواردی وجود دارد که Prototype (117) یا Abstract Factory (87) می توانند به طور سوداور استفاده شوند. در زمان های دیگر انها مکمل هستند: Builder (97) می تواند از یکی از الگوهای دیگر برای پیاده سازی اجزای سازنده استفاده کند. Prototype (117) می تواند Singleton (127) را در پیاده سازی خودش استفاده کند.

از انجا که الگوهای Creational ارتباط نزدیکی با هم دارند، ما هر پنج مورد را با هم مطالعه خواهیم کرد تا شباهت ها و تفاوت های انها را برجسته کنیم. ما همچنین از مثال رایج – ساخت یک پیچ و خم (maze) برای یک بازی کامپیوتری – برای نشان دادن پیاده سازی انها استفاده خواهیم کرد . maze و بازی کمی از الگویی به الگوی دیگر متفاوت خواهد بود. بعضی اوقات بازی می تواند در پیدا کردن راه خارج از maze ساده باشد. در این موارد بازیکن باید فقط یک دید محلی از maze داشته باشد. بعضی اوقات maze برای ایجاد راه حل دچار مشکلاتی میشود و برای حل آنها خطرناک می شود، و این بازی ها ممکن است یک نقشه از بخشی از maze برای کاوش ارائه بدن.

دیدگاهتان را بنویسید