Я хочу создать класс-оболочку поверх другого класса, чтобы он скрыл функциональность обернутого класса, а также оболочка предоставляла определенные собственные методы.
Например, допустим, у нас есть класс A как
public class A{
void method1(){ ... do something ... }
void method2(){ ... do something ... }
void method3(){ ... do something ... }
}
Теперь мне нужен другой класс B, который обертывает класс A, чтобы у него были свои собственные методы, а также, если кто-то запрашивает метод класса A, он должен делегировать его классу A.
public class B{
// if someone asks method1() or method2() or method3() ... it should delegate it to A
// and also it has own methods
void method4(){ ... do something ... }
void method5(){ ... do something ... }
}
Я не могу использовать наследование (т.е. B расширяет A), потому что это непросто с моим вариантом использования (где A имеет конкретный конструктор с некоторыми параметрами, которые мы не можем получить ... но мы можем получить объект A
Я не могу просто делегировать каждую функцию в A, используя объект A (потому что в A есть несколько функций)
Есть ли другой способ получить класс B с указанными ограничениями?
Важное примечание: Класс A обрабатывается кем-то другим. Мы не можем изменить ни одну его часть.