2015-05-13 3 views
1

Какая зависимость должна находить в сигнатуре метода как параметр, а какой нет? Поскольку у нас есть контейнер IoC, такой как весна, большинство зависимостей могут быть введены через него.Каков принцип определения интерфейса с зависимостями?

Для java.util.concurrent.Executor:

public interface Executor { 

    void execute(Runnable command); 
} 

Интерфейс может быть

public interface Executor { 

    void execute(); 
} 

Другой случай, в традиционном веб-приложение, счетчик может быть записан как этот

public interface CounterManager { 

    int query(User user);//user is a runtime information 
} 

С весны предлагает область запроса, User.

public interface Counter { 

    int query();//get user through Injected 
} 

Есть ли какой-то принцип или наилучшая практика, чтобы сделать выбор? Благодаря!

ответ

0

Есть ли какой-либо принцип или наилучшая практика, чтобы сделать выбор? Благодаря!

В качестве руководства вы можете использовать «правило сложности кодирования». Все, что снижает сложность кода как краткосрочного, так и долгосрочного, является хорошим. Все, что поднимает его, плохо.

Если вы начинаете вводить все с помощью контейнера DI, вы в конечном итоге получите файл настроек DI из словаря Merriam-Webster.

Если что-то настолько простое, что можно просто передать как параметр методу, зачем усложнять работу контейнером DI?

+0

Есть ли отличный инструмент для измерения сложности кода или соединения? – Anderson

+0

@ Anderson Plenty: http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#Java http://www.javacodegeeks.com/2012/10/java-code-quality-tools-overview.html –