محمد افاضاتی

دیده ها، شنیده ها و علاقه مندی های یک برنامه نویس
دوشنبه, ۱۳ شهریور ۱۳۹۱، ۰۲:۳۳ ب.ظ

design patterns

الگو طراحی یا design patterns قسمتی از طراحی نرم‌افزار است که کمک خیلی زیادی جهت پیاده‌سازی الگوی معماری می کند. به طور کلی الگو های طراحی روش هایی جهت کد زنی بهینه تر و بهتر است. معمولا این روش ها به این علت که تعداد زیادی از برنامه نویس ها تلاش برای وضعیت بهینه، کرده اند نتیجه بهتری می دهند.

لیستی از الگو های طراحی:

 

ما یکی از الگو ها را بررسی می‌کنیم و اگر فرصت اجاز دهد در پست ها دیگر بقیه را پیاده سازی میکنیم. این نمونه با Javascript می باشد. (به علت وابسطه بودن به مقاله javascript)

Observer Pattern

در این الگو object اصلی لیستی از کسانی که observer شده‌اند نگه می‌دارد و در هنگام مورد نظر اعلام تغییر را به هر کدام notify می کند.
به طور مثال یک نمونه کد ساده از یک ثانیه شمار ببینید. در این کد هر نرم افزاری که بخواهد هر ثانیه مطلع بشود به object به صورت observer گوش می دهد.

$.utils.timer = {
    "listeners" : [],
    // لیستی از کسانی که گوش می دهند
    "add_listener" : function (f) {
        $.utils.timer.listeners.push(f);
    },
    "remove_listener" : function (f) {
        $.utils.timer.listeners.remove(f);
    },
    "tick" : function () {
        for(var i = 0; i<$.utils.timer.listeners.length; i++) {
            $.utils.timer.listeners[i].apply(window);
        }
    },
    "start_timer" : function () {
        setTimeout($.utils.timer.start_timer,1000);
        $.utils.timer.tick();
    }
};

$.utils.init = function () {
    $.utils.timer.start_timer();
};


در شروع نرم‌افزار با اجرای init همه چیز آغاز به کار می‌کند. هر عملگری با استفاده از کد زیر می‌تواند خودش را به این اضافه کند.

$.utils.timer.add_listener(current_function);

هر ۱۰۰۰ میلی ثانیه قست tick call می‌شود و به همه listener list call می شود.
الگو‌های دیگر هر کدام به روشی این کار را انجام می دهند.



نوشته شده توسط محمد افاضاتی
ساخت وبلاگ در بلاگ بیان، رسانه متخصصان و اهل قلم

محمد افاضاتی

دیده ها، شنیده ها و علاقه مندی های یک برنامه نویس
محمد افاضاتی
محمد افاضاتی برنامه نویس python php دیتابیس های postgresql mongodb و ...

رونوشتی از علاقه مندی هایم برای ماندگار تر شدن!

تبلیغات

طبقه بندی موضوعی

Feedburner RSS

Others

توییتر

design patterns

دوشنبه, ۱۳ شهریور ۱۳۹۱، ۰۲:۳۳ ب.ظ

الگو طراحی یا design patterns قسمتی از طراحی نرم‌افزار است که کمک خیلی زیادی جهت پیاده‌سازی الگوی معماری می کند. به طور کلی الگو های طراحی روش هایی جهت کد زنی بهینه تر و بهتر است. معمولا این روش ها به این علت که تعداد زیادی از برنامه نویس ها تلاش برای وضعیت بهینه، کرده اند نتیجه بهتری می دهند.

لیستی از الگو های طراحی:

  • Constructor Pattern     
  • Module Pattern    
  • Revealing Module Pattern     
  • Singleton Pattern     
  • Observer Pattern     
  • Mediator Pattern     
  • Prototype Pattern     
  • Command Pattern     
  • Facade Pattern     
  • Factory Pattern     
  • Mixin Pattern     
  • Decorator Pattern     
  • Flyweight Pattern

 

ما یکی از الگو ها را بررسی می‌کنیم و اگر فرصت اجاز دهد در پست ها دیگر بقیه را پیاده سازی میکنیم. این نمونه با Javascript می باشد. (به علت وابسطه بودن به مقاله javascript)

Observer Pattern

در این الگو object اصلی لیستی از کسانی که observer شده‌اند نگه می‌دارد و در هنگام مورد نظر اعلام تغییر را به هر کدام notify می کند.
به طور مثال یک نمونه کد ساده از یک ثانیه شمار ببینید. در این کد هر نرم افزاری که بخواهد هر ثانیه مطلع بشود به object به صورت observer گوش می دهد.

$.utils.timer = {
    "listeners" : [],
    // لیستی از کسانی که گوش می دهند
    "add_listener" : function (f) {
        $.utils.timer.listeners.push(f);
    },
    "remove_listener" : function (f) {
        $.utils.timer.listeners.remove(f);
    },
    "tick" : function () {
        for(var i = 0; i<$.utils.timer.listeners.length; i++) {
            $.utils.timer.listeners[i].apply(window);
        }
    },
    "start_timer" : function () {
        setTimeout($.utils.timer.start_timer,1000);
        $.utils.timer.tick();
    }
};

$.utils.init = function () {
    $.utils.timer.start_timer();
};


در شروع نرم‌افزار با اجرای init همه چیز آغاز به کار می‌کند. هر عملگری با استفاده از کد زیر می‌تواند خودش را به این اضافه کند.

$.utils.timer.add_listener(current_function);

هر ۱۰۰۰ میلی ثانیه قست tick call می‌شود و به همه listener list call می شود.
الگو‌های دیگر هر کدام به روشی این کار را انجام می دهند.

موافقین ۱ مخالفین ۰ ۹۱/۰۶/۱۳
محمد افاضاتی design pattern observer javascript pattern

نظرات  (۵)

سلام
ممنون از وقتی گذاشتید
اگر بتوانید این پست را کامل کنید با همین مثال برای بقیه طراحی‌ها ، پست خیلی مفیدی می‌شه
پیشنهاد می‌کنم حتمآ به ویکی فارسی اضافه کنید
پاسخ:
حتما... ممنون از پیشنهادتون
لطفا راجب Facade Pattern     مطالبی را بگذارید . ممنون
طفا راجب Factory Pattern       مطالبی را بگذارید . من خیلی نیاز به این مطلب دارم .


۲۶ مرداد ۹۲ ، ۱۰:۵۹ محسن حدایقی
با سلام وخسته نباشید.
من دانشجوی ارشد کامپیوتر نجف آباد ام که می خواستم پایان نامه خودم رو روی design Pattern ها بذارم.مشکلی که من الان دارم اینکه مقالات جالبی در مورد این قضیه پیدا نکردم و البته خودم یک design Pattern جالب طراحی کردم که کد نویسی رو خیلی شاده کردم که حتی برنامه نویس میتونه خیلی راحت فرآیند اجرایی خودش رو روی ماشین دیگه اجرا کنه و خروجی مناسب رو بگیره.ممنون میشم که در این زمینه به من کمک کنید.
اگر میشه لیست چندتا مقاله در مورد این مبحث برام لینکشو بذارید ممنون میشم.
پاسخ:
http://bookos.org/s/?q=design+Pattern&t=0

اینو ببینید - کتابهای خوبی نوشته شده در این مورد
تشششششششششششششششششکر
 عالی بود . بقیه اللگو ها را هم این وبلاگ گذاشته www.pfr.blogfa.com

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی