Interfejs (lub klasa abstrakcyjna ze wszystkimi metodami abstrakcyjnymi) jest potężną bronią w języku statycznym, takim jak C#, JAVA. Pozwala na stosowanie różnych typów pochodnych w sposób umundurowany. Wzorce projektowe zachęcają nas do korzystania z interfejsu w jak największym stopniu.Interfejs w dynamicznym języku?
Jednak w języku z dynamicznym typem wszystkie obiekty nie są sprawdzane pod względem typu podczas kompilacji. Nie muszą implementować interfejsu, który będzie używany w określony sposób. Trzeba tylko upewnić się, że mają określone metody (atrybuty) zdefiniowane. Dzięki temu interfejs nie jest konieczny lub przynajmniej nie jest tak użyteczny, jak w języku statycznym.
Czy typowy język dynamiczny (np. Rubinowy) ma interfejs? Jeśli tak, to jakie są zalety posiadania go? Jeśli tak nie jest, to czy tracimy wiele pięknych wzorów, które wymagają interfejsu?
Dzięki.
Lubię drugi punkt! :) – Shuo
Jeśli klasa udostępnia domyślne implementacje, nie ma ona charakteru interfejsu, ponieważ interfejsy różnią się od klas abstrakcyjnych tym, że nie mogą zawierać żadnych implementacji. – sepp2k
@ sepp2k, zgadzam się. To nie jest to, co nazywam interfejsem. – Shuo