چند نکته در یادگیری Design Pattern ها

17 02 2009

نکات ذیل بر روی هر مبحثی که در ارتباط با یادگیری است، تقریبا قابل اعمال است، ولی بنده به شخصه بر این معتقدم که افرادی که سعی در یادگیری الگوهای استاندارد دارند باید از این نکات در یادگیری چنین مطالبی که کاملا نیازمند ذهنی خلاق و پویا می باشد پیروی نمایند.

  • آهسته برانید!! نکات زیادی برای یادگیری-ذهنی کوچک برای بخاطر سپردن:
    مطالب را فقط نخوانید، صبر کنید، اندیشه کنید، یادبگیرید. زمانی که سوالی برایتان مطرح می شود، سعی در گریز از آن سوال نکنید، فزض کنید کسی واقعا از شما این سوال را پرسیده است. اگر جواب سوال در انباشته معلوماتتان باشد به آنها رجوع کرده و جواب مناسب را همراه با دلیل ذکر کنید اگر خیر عجله ای در رسیدن به جواب نداشته باشید، سوال را در دفترچه یادداشتی یادداشت کرده تا در آینده با اندوختن دانش در زمینه طراحی بتوانید جوابی برای آن پیدا کنید. این بهترین راه یادگیری در اینگونه از مسائل می باشد که شما به مغزتان فشار آورده تا آنرا به خاطر بسپارید.
Boost Brain

Boosted Brain

  • تمرین کرده یادداشت برداری کنید:
    هیچوقت سعی در کپی برداری از مثالهای آماده این که در منابع و سایتهای مرتبط آورده شده اند نکنید، در اینصورت شما توانایی فکر کردن و یافتن راه حل مسائل را از مغزتان خواهید گرفت. مدادی در دست گرفته و مسائل مرتبط را خود انجام دهید. از انجام عملی که خود قصد یادگیری آنرا دارید، توسط دیگران خودداری نمایید.
  • قبل از خواب مواردی را که یادگرفته اید را مرور کنید:
    بخش اصلی آموزش و یادگیری زمانی شروع خواهد شد که شما منبع یا کتاب را کنار گذاشته اید. مغز شما نیاز دارد تا زمانی را برای انجام پردازش های گوناگون بر روی آموخته ها به خود اختصاص دهد. اگر در بین این مدتی که مغز شما مشغول می باشد، سعی در یادگیری مطلبی جدید نماییدف چیزهایی را که آموخته اید را نیز فراموش خواهید کرد. در نتیجه زمانی را پس از یادگیری اختصاص دهید تا مغز موارد آموخته شده را بازبینی کرده و کاملا ثبت نماید. بهترین زمان قبل از خواب است.
  • آموخته های خود را با صدای بلند تکرار کنید- یا با صدای بلند با خودتان در مورد موارد آموخته شده بحث کنید:
    بحث دیگری که باعث تقویت حافظه در یادگیری مسائل پیچیده ای همانند Design Pattern، صحبت کردن با خود یا اموزش آن مطلب به شخص مجازی یا حقیقی است. سعی نکنید آموخته های خود را برای خود نگه داشته و انباشته کنید زیرا در شرایطی که استفاده نشوند از یاد خواهند رفت، مغز خود را به اشتراک بگذارید و آموخته ها را به نفع خود آموزش دهید.
  • به نیاز های مغز گوش کرده و جوابی مناسب به آن بدهید:
    نکته ی مهمی که در طراحی باید به آن توجه کرد این است که اطلاعات خام مغز شما در مورد چیزی که می خواهید به خاطر آورید کاملا بارگذاری شده است یا خیر؟ اگر جواب منفی است لحظه ای درنگ نکرده به گذشته برگشته موضوع را مجددا بررسی، ابهامات را مرتفع و از یادگیری مجدد ان کاملا مطمئن شوید. در غیر اینصورت نکته ی کوری در این بین خواهد ماند که در آینده باعث بروز مشکل خواهد شد.
  • مسئله را کاملا حس کنید:
    قبل از اینکه تمرینی انجام دهید یا بخواهید Solution ی برای حل یک مسئله اراده دهید مطمئن شوید که کاملا با موضوع آشنا شده و آنرا درک کرده اید، سپس راه حل مناسب را انتخاب کرده و با توجه به موارد آموخته شده حرکت نمایید. هیچوقت سعی در ارائه نظر و پیشنهادی در مورد مسائلی که نسبت به آنها دانشی کسب ننموده اید نکنید چرا که ممکن است این استدلال امروزی شما آموخته های شما را در آینده مرتبط با این بحث تحت تاثیر قرار داده و نتیجه ای نامطلوبی حاصل گردد.
  • مطلب آموخته شده را عملی نمایید:
    سعی کنید چیزی را که می آموزید در یک پروژه و طراحی جدید به کار برید و یا در پروژه های قبلی با رعایت مراحل اعمال نمایید اینکار باعث خواهد شد که شما تجربه ی لازمه را در اعمال مطالب آموخته شده در پروژه های واقعی بدست بیاورید.

مطالب مرتبط:
آشنایی با Design Pattern

توصیه می کنم:
CodeBetter
Head First Design Pattern

منابع :

Advertisements




آشنایی با Design Pattern

16 02 2009

Design Pattern مجموعه ای از روش های استاندارد و تست شده برای حل مشکلات در فاز طراحی و پیاده سازی نرم افزار می باشد، روش هایی که حاصل تجربه طراحان و برنامه نویسان در مرتفع سازی مشکلاتشان بوده است.

Design Strategy

Design Strategy

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

کتاب مرتبط

کتاب مرتبط

این امر مستلزم این است که شما کاملا مشکل را درک کرده و با مباحث OOP آشنایی کامل داشته باشید تا بتوانید  نوع الگوی خاص را در راستای مرتفع کردن مشکل انتخاب نمایید. استفاده از الگو به  معنای این نیست که الگو به شما بگوید که دقیقا چه کار کنید، فیلدی که انتخاب می کنید چه نوع باشد، کلاس چه فیلد و چه متد هایی داشته باشد، نقش الگو تنها و تنها راهنمایی و ارائه ی دیدگاهی مفید و کلی در حل مشکل، مرتبط با موقعیت شما در فاز طراحی است.

بیش از 250 الگو در سراسر جهان وجود دارد که 23 الگوی GOF بیش از همه مشهور و محبوب طراحان بوده و مورد استفاده قرار می گیرند. هر طراح یا برنامه نویس حداقل باید با چندی از این الگوها آشنایی داشته باشد تا در شرایط گوناگون بتواند از آنها بهره بگیرد ( طراحان و برنامه نویسان زیادی با چندین سال تجربه هنوز آشنایی با این مباحث ندارند ). ذهن خلاق در بررسی مشکل، تطبیق آن با الگوهای موجود در ذهن، پیاده سازی درست و اصولی، عدم اعمال سلایق شخصی، تیمی مجرب در زمینه object oriented programming از موارد اجتناب ناپذیر برای مسطح کردن مسیری در موفق بودن استفاده الگو می باشد.

اطلاعات بیشتر ( مراجع ):

http://www.fluffycat.com/Java-Design-Patterns
http://www.dofactory.com/Default.aspx

لیستی از مشهورترین الگوهایی:

GoF Creational Patterns :

  • Abstract Factory: Sets of methods to make various objects.
  • Builder: Make and return one object various ways.
  • Factory Method: Methods to make and return components of one object various ways.
  • Prototype: Make new objects by cloning the objects which you set as prototypes.
  • Singleton: A class distributes the only instance of itself.

GoF Structural Patterns:

  • Adapter: A class extends another class, takes in an object, and makes the taken object behave like the extended class.
  • Bridge: An abstraction and implementation are in different class hierarchies.
  • Composite: Assemble groups of objects with the same signature.
  • Decorator: One class takes in another class, both of which extend the same abstract class, and adds functionality.
  • Facade: One class has a method that performs a complex process calling several other classes.
  • Flyweight: The reusable and variable parts of a class are broken into two classes to save resources.
  • Proxy: One class controls the creation of and access to objects in another class.

GoF Behavorial Patterns:

  • Chain Of Responsibility: A method called in one class can move up a hierarchy to find an object that can properly execute the method.
  • Command: An object encapsulates everything needed to execute a method in another object.
  • Interpreter: Define a macro language and syntax, parsing input into objects which perform the correct opertaions.
  • Iterator: One object can traverse the elements of another object.
  • Mediator: An object distributes communication between two or more objects.
  • Memento: One object stores another objects state.
  • Observer: An object notifies other object(s) if it changes.
  • State: An object appears to change its` class when the class it passes calls through to switches itself for a related class.
  • Strategy: An object controls which of a family of methods is called. Each method is in its` own class that extends a common base class.
  • Template: An abstract class defines various methods, and has one non-overridden method which calls the various methods.
  • Visitor: One or more related classes have the same method, which calls a method specific for themselves in another class.