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

Вот у тебя есть код, который ждёт Animal, но ещё

ждёт, что к объекту прикрутят, ну не знаю, api Circle там например?

53 ответов

12 просмотров

кроме привычной плюсовикам и жабофилов типизации существует ещё и утиная

Алексей-Попов Автор вопроса

С конкретным примером было бы понятнее Не на этом эльфийском наречии, а просто словами

что не понятно? если понадобилось новое удобное api а за базовый тип отвечает кто-то другой, не надо лезть в чужой код, просто прикрути api и пользуйся

Алексей-Попов Автор вопроса

То есть это просто реализация нескольких (разных) интерфейсов одним объектом? Ну так бы и сказал 😁

в данном случае интерфейс прикручивается один

звучит как паттерн «композиция» 😏

значит "композиция" это когда потомок в конструкторе принимает предка, выглядит как он и даёт новые возможности?

Компоновщик (англ. Composite pattern) — структурный шаблон проектирования, объединяющий объекты в древовидную структуру для представления иерархии от частного к целому.

то что у меня с этим определением не сходится (или я не так понял)

ну и ладно, лень обсуждать 😊

ну вот... в итоге знания о паттернах для меня бесполезно

знали бы - не было бесполезно 😊

Алексей-Попов Автор вопроса

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

в js же нет интерфейсов, или я что-то пропустил?

декоратор - функция одного аргумента, такие функции очень удобно использовать в синтаксисе кофескрипта (знаю что так ещё и паттерн называется, но похоже он и заключается в использовании функции одного аргумента)

ключевого слова интерфейс нет, но реализовать их можно)

Алексей-Попов Автор вопроса

Ты можешь открыть для себя удивительный мир Сам справочник у гоф совсем не толстый, его за вечер прочитать можно

Как?

ну я знаю только на основе договоренностей. договариваемся что этот объект по логике будет иметь такие то методы / свойства, и всегда им следуем. без TS - это неявные, наверно сложно поддерживаемые, но все же, интерфейсы))

Эм, интерфейс может вообще не имеет методов, не говоря уже про то что два интерфейса могут иметь одинаковые методы

это вы из го взяли что интерфейс не имеет методов?)) а в чем его польза тогда? или приведите пример, может просветить меня незнающего

> приведите пример dto, например 😊

Из Java и php, называется marker interface

- я в предыдщуем сообщение указал через слэш что "методы / (или/и) свойства" - имхо, интерфейс должен быть как java / c#, иметь только методы, а не свойства, то что в TS это так сделано - другой вопрос

https://docs.oracle.com/javase/7/docs/api/java/lang/Cloneable.html Вот интерфейс без методов и свойств

глянул я этот список от четвёрки, походу одна строчка моего кода может содержать сразу несколько паттернов, что делает бесполезным использовать их для описания

ну я лишь ответил на ваш вопрос про то, как “интерфейс не имеет методов?”)))

Алексей-Попов Автор вопроса

Дело исключительно в определении слова интерфейс Если понимать под ним сигнатуру функции, или набор функций с определённой сигнатурой, то очевидно, что в js это есть

Алексей-Попов Автор вопроса

А ты глянул только названия? Сложно представить, что есть вменяемый код, в котором одна строчка сразу несколько паттернов реализует

😅

и это я ещё не всё прочитал

Алексей-Попов Автор вопроса

Я угадал с названиями?

Я выше написал, интерфейс может быть пустой

Алексей-Попов Автор вопроса

В языках с утиной типизацией в этом нет смысла (хотя какой в этом смысл в любых языках для меня пока загадка)

Чтоб не засирать класс мета информацией

Алексей-Попов Автор вопроса

Мне не стало понятнее 🤷‍♂ Практическая цель какая?

Пометить что класс нельзя клонировать/сериализировать/логировать

Алексей-Попов Автор вопроса

Этой цели можно добиться добавлением комментария? Пометка же только для человека будет, а не для компилятора

Нельзя, комментарий не выдаст ошибку в рантайм, если человек его не заметит

Алексей-Попов Автор вопроса

А как получается ошибка в рантайме? Например, в жабе - будет сгенерировано исключение, если в классе описать метод serialize при имплементации пустого интерфейса nonSerializible?

Без интерфейса clonable нельзя клонировать объект через object.clone

Алексей-Попов Автор вопроса

Ты о пустых интерфейсах говорил Как пустым интерфейсом пометить, что объект нельзя клонировать, и что именно произойдёт при попытке реализовать оба интерфейса (clonable/nonclonable) и вызове clone?

Пустые интерфейсы можно юзать через instanceOf - а это антипатерн.

Алексей-Попов Автор вопроса

что имеется в виду под юзанием пустого интерфейса? и мы в контексте жабы были, там нет instanceOf моя мысль была о том, что пустой интерфейс вполне можно заменить комментариями, но оппонент утверждает, что будут какие-то ошибки, и я всё хочу понять, какие именно ошибки и когда

https://www.baeldung.com/java-instanceof

В duck typing он бесполезен наверное и реально можно заменить комментами. Но при стат типизации можно использовать.

Алексей-Попов Автор вопроса

точно, спасибо тем не менее, мне не стало понятнее чем имплементация пустого интерфейса принципиально отличается от комментариев, и как добиться ошибки

Про java или js(ts) говорим?

Алексей-Попов Автор вопроса

java или c#, там есть интерфейсы в том смысле, который в него вносили в начале дискуссии

Будет исключение

Алексей-Попов Автор вопроса

конкретно с клонированием в жабе вроде как не будет, но я уже сам разобрался, почему там для клонирования пустой интерфейс

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

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

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
How to create an OS in C? what to study?
Linus
18
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
а как бы вылезти из ИО, что то типа IO -> Ether или в какую сторону смотреть ? что то туплю
Fedor
9
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Карта сайта