170 похожих чатов

Какую задачу интерфейс решает? как начать его использовать, пока чет

новое и не нужное :)

3 ответов

18 просмотров

Сложный вопрос на самом деле. Особо красиво (доступно) на него не смогу ответить. 1. Вообще благодаря ему можно реализовать параметрический полиморфизм. Что уменьшает дублирование. 2. Также, благодаря тому, что функций будет принимать интерфейс, а не конкретный тип, то можно не завязываться на этот самый конкретный тип. Что ведет к модульности и меньшей связанности кода. upd то есть в том пакете, где функция принимает интерфейс ты не делаешь импорт пакета, в котором тот тип, который тебе надо принять. Другими словами ты можешь принимать вообще любой тип, который реализует интерфейс

Rostislav Teryaev
Сложный вопрос на самом деле. Особо красиво (досту...

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

Например есть какая-то структура, которая стучится в базу данных или делает запросы по сети, при этом у нас есть функционал который использует эту структуру. И нам например нужно тесты на это дело написать, но настоящие запросы куда-то там нам делать не хотелось бы. И вот мы можем вместо структуры подставить интерфейс, и для тестов написать фейковую "реализацию", которая на самом деле делает вид, что что-то делает, например что какой-то метод типа GetPerson(id string) (*Person, error) на самом деле не ходит в бд а просто возвращает сразу какой-то *Person. Это называется моками и возможно именно благодаря интерфейсам

Похожие вопросы

Обсуждают сегодня

У меня это всегда вопрос вызывало.. Нафига писать код так, чтобы потом ошибки вылавливать?
Nik
44
что за асемблер кста?
Shvabrikk Nya
19
всем привет. реально ли понять чем в процессе занята память? delphi/linux, процесс свой
Handatros
12
Добрый день! Пробую отловить исключение EConvertError: function _TryTextToDouble(var DoubleVar: Extended; Text: String): Boolean; begin try DoubleVar := StrToFloat...
Kirill Filippenok
19
А где @Grinyaha уважаемый пропал?
Am Ambrion
14
This automated cryptocurrency trading system uses intelligent algorithms to buy low and sell high on leading crypto exchanges. Many users have already enjoyed significant prof...
Endu Wako
1
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Сделал краткий обзор магазина из статьи и заодно там же записал инструкцию по развёртыванию. https://www.youtube.com/watch?v=8-sE1vNk95Q (чё думаете по звуку? кое-что поменял...
Andrey K
17
Привет, коллеги! Возникла задача ограничить максимальный размер вложений для определённых расширений, например, чтобы для изображений лимит был 10 МБ, а для видео — 100 МБ. Ог...
Andro
1
Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Карта сайта