ждёт, что к объекту прикрутят, ну не знаю, api Circle там например?
кроме привычной плюсовикам и жабофилов типизации существует ещё и утиная
С конкретным примером было бы понятнее Не на этом эльфийском наречии, а просто словами
что не понятно? если понадобилось новое удобное 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#, там есть интерфейсы в том смысле, который в него вносили в начале дискуссии
Будет исключение
конкретно с клонированием в жабе вроде как не будет, но я уже сам разобрался, почему там для клонирования пустой интерфейс
Обсуждают сегодня