আছে IObservable এবং IObserver .NET (এছাড়াও মধ্যে ইন্টারফেসগুলি এখানে এবং এখানে )। মজার বিষয় হল, আইওবসভারের কংক্রিট বাস্তবায়ন আইওজার্ভেবলের প্রত্যক্ষ রেফারেন্স ধারণ করে না। এটি কারা সাবস্ক্রাইব হয়েছে তা জানে না। এটি কেবল সাবস্ক্রাইবকেই প্রার্থনা করতে পারে। "সাবস্ক্রাইব করতে দয়া করে পিনটি টানুন।"
সম্পাদনা: সদস্যতা বাতিল করে IDisposable
। আমি মনে করি, শ্রোতাদের বিলম্বিত সমস্যা রোধ করতে এই স্কিমটি নিযুক্ত করা হয়েছিল ।
যদিও দুটি বিষয় আমার কাছে সম্পূর্ণ পরিষ্কার নয়।
- অভ্যন্তরীণ সাবস্ক্রাইবার শ্রেণি সাবস্ক্রাইব এবং ভুলে যাওয়া আচরণ সরবরাহ করে? কে (এবং ঠিক কখন)
IDisposable.Dispose()
আনসস্ক্রাইবারকে ফোন করে? আবর্জনা সংগ্রহকারী (জিসি) নির্বিচারবাদী নয়।
[অস্বীকৃতি: সামগ্রিকভাবে, আমি সি # এর চেয়ে সি এবং সি ++ এর সাথে বেশি সময় ব্যয় করেছি]] যদি আমি একটি পর্যবেক্ষক কে একটি পর্যবেক্ষণযোগ্য এল 1 তে সাবস্ক্রাইব করতে চাই এবং পর্যবেক্ষক ইতিমধ্যে অন্য কিছু পর্যবেক্ষণযোগ্য এল 2 এর সদস্যতা পেয়েছি তবে কী হবে?
K.Subscribe(L1); K.Subscribe(L2); K.Unsubscribe(); L1.PublishObservation(1003); L2.PublishObservation(1004);
আমি যখন এই পরীক্ষার কোডটি এমএসডিএন-এর উদাহরণের বিপরীতে চালিয়েছি, তখন পর্যবেক্ষক এল 1-তে সাবস্ক্রাইব রয়েছেন। এটি বাস্তব বিকাশে অদ্ভুত হবে। সম্ভবত এটির উন্নতি করার জন্য 3 টি উপায় রয়েছে:
- যদি পর্যবেক্ষকের ইতিমধ্যে একটি সাবস্ক্রাইবার উদাহরণ রয়েছে (যেমন এটি ইতিমধ্যে সাবস্ক্রাইব হয়েছে), তবে এটি চুপচাপ কোনও নতুন সাবস্ক্রাইব করার আগে মূল সরবরাহকারীর কাছ থেকে সাবস্ক্রাইব করে। এই পদ্ধতির এই বিষয়টি গোপন করে যে এটি আর মূল সরবরাহকারীর সাথে সাবস্ক্রাইব করা হয়নি, যা পরে আশ্চর্য হয়ে যেতে পারে।
- যদি পর্যবেক্ষকের কাছে ইতিমধ্যে একটি সাবস্ক্রাইবার উদাহরণ থাকে তবে তার ব্যতিক্রম ছুঁড়ে ফেলা হয়। একটি ভাল আচরণযুক্ত কলিং কোডটি পর্যবেক্ষককে স্পষ্টতই সাবস্ক্রাইব করতে হয়।
- পর্যবেক্ষক একাধিক সরবরাহকারীর সাবস্ক্রাইব করে। এটি সবচেয়ে উদ্বেগজনক বিকল্প, তবে এটি কি আইওবসারেবল এবং আইওবসভারের সাথে প্রয়োগ করা যেতে পারে? দেখা যাক. পর্যবেক্ষকের পক্ষে সাবস্ক্রাইবার অবজেক্টের একটি তালিকা রাখা সম্ভব: প্রতিটি উত্সের জন্য একটি। দুর্ভাগ্যক্রমে,
IObserver.OnComplete()
যে সরবরাহকারী এটি প্রেরণ করেছেন তাদের কাছে কোনও রেফারেন্স সরবরাহ করে না। সুতরাং, একাধিক সরবরাহকারীর সাথে আইওজারবার বাস্তবায়ন কোনটি থেকে সাবস্ক্রাইব করতে হবে তা নির্ধারণ করতে সক্ষম হবে না।
.NET- র IObserver একাধিক IObservables সাবস্ক্রাইব করার উদ্দেশ্যে ছিল?
পর্যবেক্ষক প্যাটার্নের পাঠ্যপুস্তকের সংজ্ঞাটির জন্য কী একজন পর্যবেক্ষক একাধিক সরবরাহকারীর সাবস্ক্রাইব করতে সক্ষম হতে হবে? বা এটি alচ্ছিক এবং বাস্তবায়ন নির্ভর?