2015-11-01 2 views
0

У меня есть Interface1 и два его реализации, ClassA и ClassB. Я хочу перенаправить все вызовы методов из 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 вместо интерфейса? Вы можете разместить свои общие реализации в абстрактном классе, а в ClassA и ClassB реализовать методы, в которых эти два класса отличаются.

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... 
    } 
} 
Смежные вопросы