2009-04-27 11 views
8

खुद को इस डिजाइन पैटर्न की आधिकारिक परिभाषा के लिए एक लिंक खोजने का प्रयास कर रहा है, जो मुझे विश्वास है कि मैंने गो 4 में देखा था लेकिन इसे कहीं भी नहीं ढूंढ सकता।इस पैटर्न को क्या कहा जाता है (प्रकार कास्टिंग से बचने में मदद करता है)?

class Processor{ 
    ProcessParameter(AbstractParameter x){ 
     x.Process(this); 
    } 

    ProcessParameter(ParameterA x){ 
     ... A-specific logic... 
    } 

    ProcessParameter(ParameterB x){ 
     ... B-specific logic... 
    } 
} 

abstract class AbstractParameter{ 
    abstract void Process(Processor p); 
} 

class ParameterA : AbstractParameter{ 
    override void Process(Processor p){ 
     p.ProcessParameter(this); 
    } 
} 

class ParameterB : AbstractParameter{ 
    override void Process(Processor p){ 
     p.ProcessParameter(this); 
    } 
} 

उत्तर

13

यह Visitor Pattern है। तकनीक को "डबल प्रेषण" कहा जाता है।

+0

मुझे आपके उत्तर का पहला संस्करण बेहतर पसंद आया। यह _is_ डबल डिस्पैच। विज़िटर पैटर्न _multiple_ विज़िटर (मेरे उदाहरण में "प्रोसेसर" कहा जाता है) की धारणा जोड़ता है। – zvolkov

+0

शीर्षक ने "पैटर्न" के लिए पूछने के बाद से जोर दिया, और सवाल गोफ को संदर्भित करता है। – erickson

संबंधित मुद्दे