Оберните сторонний интерфейс, чтобы избежать зависимости - PullRequest
0 голосов
/ 15 декабря 2011

Сторонняя библиотека предоставляет мне Интерфейс (это означает, что я получаю объект, который реализует этот интерфейс), давайте назовем его Config. В моем приложении мне нужны все функции, предоставляемые этим объектом через мой собственный интерфейс, чтобы избежать его зависимости от сторонней библиотеки, как я могу обернуть Config с MyConfig и просто использовать тот же объект в моем приложении? кроме того, правильно ли пытаться обернуть стороннюю библиотеку?

1 Ответ

1 голос
/ 15 декабря 2011

Вы можете обернуть стороннюю библиотеку, чтобы избежать зависимости во время компиляции, но сторонняя библиотека должна быть там во время выполнения.

Самый простой способ - просто делегировать методы (IDE могут создавать их автоматически):

public class DefaultMyConfig {
    private Config delegate;
    public MyConfig(Config delegate) {
        this.delegate = delegate;
    }
    public String foo() {
       return delegate.foo();
    }
}

Конечно, вы можете определить интерфейс, который совпадает с Config интерфейсом, и затем реализовать его в DefaultMyConfig, или вы можете остаться только с классом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...