Observer پترن در جاوا (Observer Pattern)

در این جلسه تیم کدگیت را با آموزش Observer پترن در جاوا همراهی کنید. در ابتدا مروری بر Behavioral Design Pattern داریم. سپس Observer را معرفی کرده و در آخر با زدن یک مثال واقعی از این پترن، آموزش را پایان می‌بریم. پیشنهاد می‌کنیم قبل از مطالعه این جلسه، آموزش‌های زیر را بررسی کنید:

  1. شی گرایی در جاوا
  2. متد در جاوا
  3. Constructor در جاوا
  4. This در جاوا
  5. Abstract در جاوا
  6. ArrayList در جاوا
  7. ارث بری در جاوا

Behavioral Design Pattern

یکی از زیر شاخه‌های دیزاین پترن Behavioral Design Pattern می‌باشد. یکی از وظایف اصلی این دیزاین پترن، تعامل اشیا و جداسازی وظایف آنها با یکدیگر است. تعریف کامل Behavioral Design Pattern بدین صورت است که، تمامی اشیا با یکدیگر به راحتی بتوانند ارتباط برقرار کرده، بدون آنکه باعث وابستگی بین آنها شود.

Observer پترن در جاوا

Observer پترن وقتی تعریف می‌شود که یک ارتباط یک به چند بین اشیا برقرار باشد بطوریکه با تغییر یکی، دیگر اشیا نیز باخبر شده و به طور اتوماتیک آپدیت شوند. اشیائی که منتظر اعلام تغییر وضعیت هستند را Observer می‌گویند و یک شی که به بقیه اشیا  تغییر را اعلام می‌کند، Subject می‌گویند.

در دنیای برنامه‌نویسی مثال‌های زیادی از Observer وجود دارد همانند نوشتن یک Listener برای Button. اگر دکمه زده شود متد‌های که به این Button وابسته هستند باخبر شده و عملیاتی را انجام می‌دهند.

Observer پترن در جاوا

مثال Observer پترن در جاوا

همانطور که در توضیحات گفتیم دو نقش Observer و Subject در Observer پترن دیده می‌شود. در این مثال ما یک کلاس به نام Observer و Subject داریم و یک کلاینت یا همان Main برنامه ما. در کلاس Subject ما یک عدد را می‌گیریم و می‌خواهیم با استفاده از کلاس Observer آن عدد به صورت دودویی و هشت هشتی و هگزادسیمال ذخیره کنیم. هرگاه که کلاس Subject عددی را گرفت کلاس Observer را باخبر می‌کند و انواع نمایش‌های آن عدد را نشان خواهیم داد. کد این مثال به صورت زیر است:

تست برنامه Observer پترن در جاوا

برای تست کدهای بالا،کد Main زیر را اجرا کنید:

خروجی برنامه به صورت زیر می‌باشد:

پسورد: www.codegate.ir

 

دسته : design pattern, java, جاوا, دیزاین پترن

دیدگاه بگذارید

نظر شما چیست؟

مطلع کردن شما از
avatar

wpDiscuz