تبليغاتX
Iranian Experts - مقدمه ای بر Design Pattern قسمت اول
 
Iranian Experts
 
 
نکاتی در رابطه با برنامه نویسی و فن آوری اطلاعات
 

مقدمه ای بر Design Pattern قسمت اول

نگارش 1

با عرض سلام خدمت دوستان عزيز و گرامی. در اين مقاله و مقاله بعدی، تصميم دارم که شما را با مفاهيم Design Pattern آشنا نمايم. دوستان عزيز، در صورتيکه که با زبان های NET. به عنوان زبانهای کاملا شیء گرا آشنايی داشته باشيد، مطمئنا با کلاس های متعددی آشنا شده و يا شخصا نسبت به ايجاد آنها اقدام کرده ايد. حال اگر به زبان ساده Member های يک کلاس را Fields, Property, Method, Event بناميم، شايد شما تاکنون با صدها و يا هزاران کلاسی که با يک و يا ترکيبی از اين Member ها ايجاد می شوند، آشنا شده و يا ايجاد کرده باشيد. حال با توجه به مطالب عنوان شده، سوال اين است که يادگيری Pattern ها چه جايگاهی در طراحی و يا پياده سازی کلاس ها دارد؟

اجازه دهيد که با مثال ساده، اين مساله را بررسی نماييم:

دوستان، شايد در زمان طراحی و يا پياده سازی برنامه های خود، با کلاسهايی روبرو شده ايد که اصطلاحا کلاسهای کلاسيک نبوده اند! و در زمان طراحی و يا پياده سازی آنها، شما را کمی به فکر فرو برده و يا بعضا دچار سردرگمی کرده باشند!. در اينگونه موارد Pattern ها به ياری شما آمده و  مشکلاتتان را تا حجم قابل قبولی حل می نمايند. اجازه دهيد نمونه ای را با هم بررسی نماييم. تصور کنيد که تصميم داريد در پروژه خود، کلاسی طراحی نماييد که بتوان از آن تنها يک شیء ايجاد نمود! ممکن است کمی تعجب کنيد!! ولی باور کنيد که در يک پروژه واقعی به کرات اتفاق می افتد که شما تمايل به ايجاد چنين کلاس هايی داشته باشيد. اجازه دهيد نمونه هايی از اين دست را برای شما ذکر نمايم:

1- کلاس مديرعامل. (در يک سازمان بيش از يک مديرعامل وجود ندارد)
2- کلاس رئيس هيات مديره. (در يک سازمان بيش از يک رئيس هيات مديره وجود ندارد)
3- کلاس Supervisor.
4- کلاس Connection. با توجه به اينکه در اکثر موارد پيشنهاد می شود که در هر پروژه، خصوصا در پروژه های Windows Based بيش از يک Connection به بانک اطلاعاتی نداشته باشيم، ايجاد کلاسی که تنها امکان يک شیء Connection داشته باشد، بسيار اهميت خواهد داشت.

با توجه به نمونه های فوق، ايجاد کلاسی که بتوان از آن فقط يک شیء ايجاد نمود، اهميت زيادی پيدا می کند. ولی چگونه چنين کلاسی ايجاد نماييم:

1- در صورتيکه خودمان می خواهيم از چنين کلاسی استفاده نماييم، تا آخر پروژه حواسمان را جمع کنيم که خدای نکرده، بيش از يک شیء از آن ايجاد نکنيم!
2- در صورتيکه در پروژه تيمی کار می کنيم، همکارانمان را قسم دهيم! که از اين کلاس بيش از يک شیء ايجاد نکنند!!
3- ساعتها فکر کنيم تا يک راه حل نسبتا قابل قبولی پيدا کنيم!!!

صبر کنيد! اين روشها را فقط برای مزاح عرض کردم!! مطمئن باشيد که بکارگیری هر يک از اين سه روش فوق، پروژه شما را با بحران جدی مواجه می کند. پس راه حل چيست؟

در واقع طراحی چنين کلاس هايی، به مرور زمان، گريبانگير هر برنامه نويسی شده است و به مرور زمان، برنامه نويسان خبره با توجه به تجربيات شخصی و ديگران، تصميم به ايجاد الگوهايی کرده اند که راه حل اينگونه مشکلات خواهد بود. در حال حاضر شايد در حدود يکصد الگو يا Pattern در اين رابطه وجود داشته باشد که تنها بيست و پنج مورد از آنها استاندارد شده و مورد استفاده طراحان و برنامه نويسان قرار می گيرد. شايد يکی از ساده ترين و پرکاربرد ترين اين الگوها، الگوی Singleton بوده که با استفاده از آن، نمونه های فوق به راحتی قابل طراحی و پياده سازی می باشند. نکته قابل توجه اين است که در برنامه Rational XDE 2003، تمامی اين الگوهای معروف به صورت Built in وجود داشته و طراحان می توانند تنها با يک Drag & Drop ساده، از اين الگوها در طراحی خود استفاده نمايند. لذا يادگيری اين الگوها را برنامه نويسان عزيز و خصوصا طراحان گرامی پيشنهاد می کنم.

نکته اول: در نگارش 2 همين مقاله، پس از Upload فايل آموزشی Introduction to Design Pattern with C# Language، که توسط شرکت IBM نوشته شده است، لينک مربوط به آن را برای دريافت فايل PDF مربوطه، قرار می دهم.
نکته دوم: به اميد خداوند متعال، در مقاله بعدی، پياده سازی و تحيل اين الگو (Singleton) را به شما عزيزان آموزش خواهم داد.

شاد و پيروز باشيد
داريوش تصديقی

 |+| نوشته شده در  دوشنبه دوازدهم اردیبهشت 1384ساعت 23:12  توسط داریوش تصدیقی  | 
 
  بالا