2010-06-07 12 views

उत्तर

15

यदि आप प्रतिनिधिमंडल पैटर्न, wikipedia has a great example, written in java का जिक्र कर रहे हैं।

मेरा मानना ​​है कि पेज के लंबे समय तक उपरोक्त उदाहरण सबसे अच्छा एक है:

interface I { 
    void f(); 
    void g(); 
} 

class A implements I { 
    public void f() { System.out.println("A: doing f()"); } 
    public void g() { System.out.println("A: doing g()"); } 
} 

class B implements I { 
    public void f() { System.out.println("B: doing f()"); } 
    public void g() { System.out.println("B: doing g()"); } 
} 

class C implements I { 
    // delegation 
    I i = new A(); 

    public void f() { i.f(); } 
    public void g() { i.g(); } 

    // normal attributes 
    void toA() { i = new A(); } 
    void toB() { i = new B(); } 
} 


public class Main { 
    public static void main(String[] args) { 
     C c = new C(); 
     c.f();  // output: A: doing f() 
     c.g();  // output: A: doing g() 
     c.toB(); 
     c.f();  // output: B: doing f() 
     c.g();  // output: B: doing g() 
    } 
} 
+0

धन्यवाद! विरासत पर प्रतिनिधिमंडल का लाभ रनटाइम परिवर्तन है, लेकिन सभी उदाहरण मैं प्रतिनिधिमंडल से अधिक समेकित संरचना के साथ आ सकता हूं। यह उदाहरण स्पष्ट रूप से बताता है कि मैंने जो लेख पढ़े हैं, उनके लेखकों का क्या अर्थ है। – Chaitanya

39

प्रतिनिधिमंडल है कि - वास्तव में असली दुनिया में की तरह: के साथ नज़दीकी बढ़ाने

public interface Worker() { 
    public Result work(); 
} 

public class Secretary() implements Worker { 

    public Result work() { 
    Result myResult = new Result(); 
    return myResult; 
    }  
} 

public class Boss() implements Worker { 

    private Secretary secretary; 

    public Result work() { 
    return secretary.work(); 
    } 
} 

(जोड़ा कार्यकर्ता इंटरफ़ेस प्रतिनिधिमंडल पैटर्न)

2

aioobe के समान उदाहरण लेकिन वर्ग के नामों को और अधिक सहज ज्ञान युक्त लोगों में बदल दिया। असली दुनिया के उदाहरणों के समानता प्राप्त करना।

public static void main(String[] args) { 
    Boss boss = new Boss(); 
    boss.toDeveloper(); 
    boss.f(); 
    boss.g(); 

    boss.toSrDeveloper(); 
    boss.f(); 
    boss.g(); 
} 

interface I { 
    void f(); 
    void g(); 
} 

class Developer implements I { 
    public void f() { 
     System.out.println("Developer: f() is too hard for me."); 
    } 

    public void g() { 
     System.out.println("Developer: g() is not in my domain."); 
    } 
} 

class SrDeveloper implements I { 
    public void f() { 
     System.out.println("Sr. Developer: Okay, I'll see f()"); 
    } 

    public void g() { 
     System.out.println("Sr. Developer: I'll do g() too."); 
    } 
} 

class Boss implements I { 
    // delegation 
    I i; 

    public void f() { 
     i.f(); 
    } 

    public void g() { 
     i.g(); 
    } 

    void toDeveloper() { 
     i = new Developer(); 
    } 

    void toSrDeveloper() { 
     i = new SrDeveloper(); 
    } 
} 
संबंधित मुद्दे