2015-04-21 4 views
2

Учитывая, что у меня есть класс интерфейса и отдельный класс реализации. класс интерфейса отображается клиенту, но не исходный код класса реализации. почему это так? Я знаю, что одна причина - из-за инкапсуляции. есть ли еще причины?java: почему код реализации не показан клиенту

ответ

0

Отчасти из-за того, что инкапсуляция, о которой вы говорили, заключается в том, что, когда клиент разрабатывает интерфейс вместо класса, им гарантируется, что они могут кодировать их интерфейс, как если бы это был контракт.

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

Это мощная вещь, потому что она позволяет разработчикам более эффективно тестировать модуль. Это также позволяет разработчикам более легко работать параллельно. Клиентские разработчики могут программировать интерфейс, а модуль тестирует его, а другой разработчик кодирует реализацию класса, реализующего интерфейс. Разработчик реализации может аналогичным образом тестировать свой класс отдельно.

+1

Как он сказал, интерфейс можно рассматривать как договор. Класс, реализующий интерфейс, должен будет выполнить контракт. Кроме того, свободная связь при использовании интерфейса полезна, потому что вы можете впоследствии изменить * реализацию *, не изменяя код самого вызывающего (например, новое имя класса реализации). – lschuetze

Смежные вопросы