Учитывая, что у меня есть класс интерфейса и отдельный класс реализации. класс интерфейса отображается клиенту, но не исходный код класса реализации. почему это так? Я знаю, что одна причина - из-за инкапсуляции. есть ли еще причины?java: почему код реализации не показан клиенту
ответ
Отчасти из-за того, что инкапсуляция, о которой вы говорили, заключается в том, что, когда клиент разрабатывает интерфейс вместо класса, им гарантируется, что они могут кодировать их интерфейс, как если бы это был контракт.
Преимущество здесь в том, что он позволяет модулю быть более модульным и может способствовать ослаблению связи между классами программного обеспечения и компонентами. Независимо от того, имеет ли я даже правильную реализацию интерфейса или нет, я мог бы высмеять ожидаемое поведение интерфейса в своих модульных тестах, чтобы мои модульные тесты могли проверять и проверять код моего клиента в изоляции от конкретной реализации интерфейса.
Это мощная вещь, потому что она позволяет разработчикам более эффективно тестировать модуль. Это также позволяет разработчикам более легко работать параллельно. Клиентские разработчики могут программировать интерфейс, а модуль тестирует его, а другой разработчик кодирует реализацию класса, реализующего интерфейс. Разработчик реализации может аналогичным образом тестировать свой класс отдельно.
- 1. Почему результат показан так? java
- 2. Скрытие реализации клиенту
- 3. Почему мой JLabel не показан?
- 4. Почему мой показ не показан?
- 5. Почему этот код WinSock не подключается к клиенту?
- 6. Почему сервер не пишет клиенту?
- 7. Создать pdf-код не показан Диаграмма
- 8. MongoDB не отвечает Клиенту Java
- 9. ImageLabel не показан в BorderLayout.NORTH - Java Swing
- 10. Java-код для реализации команды break break
- 11. DRY код для реализации action listenener (JAVA)
- 12. Почему JQuery плагины код показан в исходном коде
- 13. Почему интерфейсы Java имеют реализации методов?
- 14. Почему мой счетчик не показан в Turbolinks?
- 15. Почему анимированный gif в typo3 не показан
- 16. Код для реализации массива
- 17. Java: о реализации Коллекции ReverseComparator
- 18. Почему этот код для реализации mergesort не дает правильного результата?
- 19. Почему не все пакеты отправляются клиенту?
- 20. Изображение в не показан
- 21. Почему существует смещение в реализации Java String?
- 22. Почему «метод getPreferenceOnScreen лишен» показан?
- 23. Alertdialog не показан
- 24. odoo - не показан XPath
- 25. Первый TableRow не показан
- 26. Java - реверсивный путь выхода показан
- 27. Java: мой код показан как текстовый файл .. не как в формате java
- 28. Сообщение не доставляется клиенту в Java
- 29. cell.detaillabel текст не показан
- 30. Почему контактная информация не отправляется клиенту?
Как он сказал, интерфейс можно рассматривать как договор. Класс, реализующий интерфейс, должен будет выполнить контракт. Кроме того, свободная связь при использовании интерфейса полезна, потому что вы можете впоследствии изменить * реализацию *, не изменяя код самого вызывающего (например, новое имя класса реализации). – lschuetze