2015-11-01 104 views
0

我有一個Interface1和它的兩個實現,ClassAClassB。我想將所有方法調用從ClassA重定向到ClassB。目前我是這樣做的:重定向接口方法調用

class ClassA implements Interface1{ 
    method1(){ 
     b.method1(); 
    } 
    method2(){ 
     b.method2(); 
    } 
    method3(){ 
     b.method3(); 
    } 
    //and so on... 
} 

有沒有更簡單的方法來做到這一點?

+0

你爲什麼這樣做你可以使用動態代理(http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Proxy.html),但不知道這很難說是否是最好的解決方案。如果除了委託給具有相同接口的其他類以外,ClassA的實際意義何在? –

+0

A類應該有一個存在的目的..也許你應該看看裝飾模式https://en.wikipedia.org/wiki/Decorator_pattern – awsome

回答

0

您是否考慮過使用abstract class而不是界面?您可以將常用實現放在抽象類中,並且在ClassAClassB中僅實現兩個類不同的方法。

abstract class Abstract { 
    void method1() { 
     //do stuff... 
    } 
    abstract void method2(); 
} 

class ClassA extends Abstract { 
    @override 
    void method2() { 
     // do something... 
    } 
} 

class ClassB extends Abstract { 
    @override 
    void method2() { 
     // do something else... 
    } 
}