Size: a a a

Software Design/Architecture/Zen

2020 October 22

AD

Apache DOG™ in Software Design/Architecture/Zen
Есть ещё полуадхок на перегрузках
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
Алексей Гевондян
зачем наследование?
А я и не про наследование говорил. Композиция? Хорошо - как вы 100500 методов объекта ссылки будете в композите реализовывать? В ТС extends - это и в типах работает: interface A extends B {x: something} - то же, что type A = B & {x: something}
источник

AD

Apache DOG™ in Software Design/Architecture/Zen
Алексей Гевондян
как множественное наследование связано с полиморфизмом?) не вижу связи
Тебе нужно обработать A,B,C ты их наследует от интерфейса
источник

AD

Apache DOG™ in Software Design/Architecture/Zen
И вызываешь метод
источник

AD

Apache DOG™ in Software Design/Architecture/Zen
Алексей Гевондян
ок, значит джаву не будем использовать.
Не, это просто технические ограничения
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
+
Точно так же, как отсутствие async/await (promises) в пхп - "технические ограничения"
источник

АГ

Алексей Гевондян... in Software Design/Architecture/Zen
в пхп например, если в классе есть определенный метод - ты можешь сунуть этот класс туда, где этот метод ожидается, и он будет вызван. но нужно не ограничивать тип аргумент метода классом, надо вместо этого лучше использовать интерфейс. т.к. интерфейс реализовать может любой класс. а вот унаследоваться от класса не любой класс может.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Алексей Гевондян
в пхп например, если в классе есть определенный метод - ты можешь сунуть этот класс туда, где этот метод ожидается, и он будет вызван. но нужно не ограничивать тип аргумент метода классом, надо вместо этого лучше использовать интерфейс. т.к. интерфейс реализовать может любой класс. а вот унаследоваться от класса не любой класс может.
То есть надо забить на типы что бы забить на типы
источник

АГ

Алексей Гевондян... in Software Design/Architecture/Zen
˸̧̨ ͅBlack Akula˸̧̨ ͅ ̤ ̬̪
+
Точно так же, как отсутствие async/await (promises) в пхп - "технические ограничения"
так есть же промисы в пыхе - вон в газле
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Алексей Гевондян
так есть же промисы в пыхе - вон в газле
Угу, и они все такие совместимые между собой
источник

АГ

Алексей Гевондян... in Software Design/Architecture/Zen
Sergey Protko
То есть надо забить на типы что бы забить на типы
надо заменить зависимости от классов на зависимости от интерфейсов, если надо иметь несколько классов, разных, реализующих этот интерфейс. да, под это придется осознанно заложиться.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
В js тоже был период когда промисы не являлись частью спецификации
источник

АГ

Алексей Гевондян... in Software Design/Architecture/Zen
в го проще с этим - если нужные методы реализованы - значит и интерфейс реализован
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Алексей Гевондян
в пхп например, если в классе есть определенный метод - ты можешь сунуть этот класс туда, где этот метод ожидается, и он будет вызван. но нужно не ограничивать тип аргумент метода классом, надо вместо этого лучше использовать интерфейс. т.к. интерфейс реализовать может любой класс. а вот унаследоваться от класса не любой класс может.
То что ты упоминал это duck typing, так в руби любят.
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
Алексей Гевондян
в пхп например, если в классе есть определенный метод - ты можешь сунуть этот класс туда, где этот метод ожидается, и он будет вызван. но нужно не ограничивать тип аргумент метода классом, надо вместо этого лучше использовать интерфейс. т.к. интерфейс реализовать может любой класс. а вот унаследоваться от класса не любой класс может.
О, так у нас теперь только интерфейсы - типы, а классы.... недотипы, что ли?))))
источник

АГ

Алексей Гевондян... in Software Design/Architecture/Zen
Sergey Protko
То что ты упоминал это duck typing, так в руби любят.
ага, если не указать у аргумента тип, а оставить mixed, то можно сунуть туда любой класс с нужным методом, и все сработает.
источник

АГ

Алексей Гевондян... in Software Design/Architecture/Zen
но это не очень хорошо, потому что реальной инфы о типе нет. лучше интерфейсы все-таки делать
источник

АГ

Алексей Гевондян... in Software Design/Architecture/Zen
˸̧̨ ͅBlack Akula˸̧̨ ͅ ̤ ̬̪
О, так у нас теперь только интерфейсы - типы, а классы.... недотипы, что ли?))))
ну вот ты допустим хочешь а и б тип иметь. при этом а и б - классы. теперь вопрос - что эти классы делают? почему нельзя создать 2 интерфейса с теми же методами, и не написать класс, имеющий все поля классов а и б, и реализующий оба интерфейса, и использовать его там?
источник

АГ

Алексей Гевондян... in Software Design/Architecture/Zen
да, придется убрать требование "дай мне а" на требование "дай мне интерфейс а"
источник

АГ

Алексей Гевондян... in Software Design/Architecture/Zen
порефачить придется. но это вроде не большая проблема
источник