تا %60 تخفیف خرید برای 2 نفر با صدور مدرک فقط تا
00 00 00
فاطمه30

الگوي obsever

همانطور که میدانیم در الگوی Observer هدف observer ها مطلع شدن از تغییراتsubject میباشد. حال اگر بخواهیم این اطلاع دوطرفه باشد، یعنی subject هم از تغییراتobserver ها مطلع شود و به عبارتی کلاسها -در ارتباط با یکدیگر- هم observer باشندو هم subject ، در الگو پايه چه تغییراتی باید صورت پذیرد ؟

در اين حالت من يك كلاس ديگه مثلا به اسم sub-obs درنظر گرفتم كه نقش هر دو رو داره و observer هابراي ثبت نام و انصراف و همچنين subject ها براي فراخواني متد notify كه تغييرات رو اعلام ميكنه به اين كلاس مراجعه مي كنند

بعد گفتم در subject يك متد notify ديگه وجود داشته باشه كه با فراخواني اون notify كلاس جديد sub-obs اجرا بشه (يك اشاره گر از نوع كلاس sub-obs داره)

در observer هم يك متد باشه كه ,وضعيتش رو مشخص ميكنه كه observer است يا subject . هر وقت state اون در حالت subject قرار گرفت ابزور ميتونه سابجكت باشه (باز هم از يك اشاره گر از نوع كلاس sub-obs داخلش داره كه بتونيم در حالت سابجكت از متد هاي ثبت نام و انصراف استفاده كنه )

حالا مي خوام بدونم آيا راه كار من درست جواب ميده ؟ و آيا بايد متدهايي كه در اين كلاس sub-obs هستند obstract باشن؟يا بايد يه پياده سازي اوليه داشته باشن؟

آيا لازمه متد upbate آبزور ها هم در اين كلاس جديد sub-obs معرفي بشه؟

ميخوام اول نمودار كلاسش بكشم بعد كدش پياده كنم

ممنون ميشم كمكم كنيد

فوريه

سپاس

این سوال 2 پاسخ دارد.
لذت یادگیری با توسینسو
به عنوان شخصی که مدت هاست از سایت توسینسو استفاده می کنم باید بگم که واقعاً یکی از بهترین مرجع ها برای ارتقاء دانش شخصی هست. دوره های سایت، راهکارها و مطالب، همگی عالی هستند.

سلام به شما دوست عزیز

راهی که رفتید درست هستش. ولی شما می توانید اول abstract class یا interface بسازید و بعد اون رو در یک کلاس دیگه پیاده سازی کنید.

کانال تلگرام، اینستاگرام، توییتر: mehdiadeli9
  • انتخاب شده به عنوان جواب توسط 1 نفر
فاطمه30

اگر در متد هاي sub-obs براي انصراف و ثبت نام هم آبزور هم سابجكت ارسال شود و يك Hashmap داشته باشيم كه آنها را ذخيره كند بدون اينكه نياز به متد state در آبزور باشد از روي همين جدول مي توانيم متوجه شويم كه آيا اين ابزور ، سابجكت هم هست يا خير؟؟

ممنون بخاطر پاسخگويي سريع تون

بله می توان این کار رو کرد با این کار در هر بار اتفاقی که می فتد شما باید Hashmap را جستجو کنید تا observer های متناظر را پیدا کنید و notify آنها را صدا بزنید.

کانال تلگرام، اینستاگرام، توییتر: mehdiadeli9
  • انتخاب شده به عنوان جواب توسط 1 نفر
فاطمه30

خيلي ممنون از شما .......

پاسخ شما
برای ارسال پاسخ خود وارد شوید.