पैटर्न स्वयं वास्तव में यह निर्धारित करने के लिए निर्धारित नहीं करता है कि इसे कैसे संभालना है।
मेरी अपनी पसंद एक संदेश/घटना केंद्र है जहां प्रस्तुतकर्ता कुछ घटनाओं में रुचि पंजीकृत कर सकते हैं। यह जटिल निर्भरता पेड़ों को रोकता है और प्रस्तुतकर्ताओं को टेस्टेबल रखता है।
उदाहरण के लिए:
class PresenterA
{
void HandleProductSelectionChanged(int productId)
{
EventHub.Publish(EventType.ProductChanged, productId);
}
}
class PresenterB
{
void PresenterB
{
EventHub.Register(EventType.ProductChanged, HandleProductChanged);
}
public void HandleProductChanged(object state)
{
var productId = (int)state;
var productDetails = LoadProductDetails(productId);
view.DisplayProductDetails(productDetails);
}
}
EventHub प्रत्येक घटना के प्रकार के लिए आह्वान करने के लिए ग्राहकों की एक सूची रखना होगा।
आप अपनी टेस्टेबिलिटी बरकरार रखते हैं - यह देखने के लिए कि प्रेजेंटरबी एक नए उत्पाद चयन का जवाब कैसे देगा, बस HandleProductChanged
पर कॉल करें।
एकमात्र नुकसान (किसी भी पैटर्न के साथ) क्या आप एक स्तर का संकेत प्रस्तुत करते हैं। अगर प्रेजेंटरए ने सीधे प्रेजेंटरबी का आह्वान किया, या प्रेजेंटरबी ने प्रेजेंटर ए पर एक ईवेंट की बात सुनी, तो यह तुरंत स्पष्ट हो रहा है कि क्या होने जा रहा है।
इस दृष्टिकोण में, आपके पास EventType.ProductChanged को देखने का अतिरिक्त चरण होगा, और उसके बाद उस प्रेजेंटर्स ने उस ईवेंट में रुचि दर्ज की है।
अपने अनुभव में, संकेत का एक स्तर स्तर मॉड्यूलरिटी के बराबर है।
स्रोत
2012-03-19 00:11:31
यह वही है जो मैं खोज रहा था, प्रस्तुतकर्ता संदर्भों को पारित करने से काफी बेहतर दिखता है। मैं कल इस पर एक नज़र डालूंगा जब मैं थक गया नहीं हूं। धन्यवाद। – user1277327