Интерфейс (или абстрактный класс со всеми абстрактными методами) является мощным оружием на статическом языке, таком как C#, JAVA. Он позволяет использовать различные производные типы в унифицированном виде. Шаблоны дизайна побуждают нас использовать интерфейс как можно больше.Интерфейс в динамическом языке?
Однако на динамически типизированном языке все объекты не проверяются для их типа во время компиляции. Им не нужно реализовывать интерфейс, который будет использоваться определенным образом. Вам просто нужно убедиться, что у них есть определенные методы (атрибуты). Это делает интерфейс не необходимым или, по крайней мере, не столь полезным, как на статическом языке.
Имеет ли интерфейс динамического языка (например, ruby)? Если да, то каковы преимущества его наличия? Если это не так, то теряем ли мы многие красивые шаблоны дизайна, требующие интерфейса?
Спасибо.
Мне нравится вторая точка! :) – Shuo
Если класс предоставляет стандартные реализации, он не является интерфейсом, потому что интерфейсы отличаются от абстрактных классов тем, что они не могут содержать каких-либо реализаций. – sepp2k
@ sepp2k, я согласен. Это не то, что я называю интерфейсом. – Shuo