6

In C#/Java, the dependency inversion principle is often demonstrated by high-level classes that depends on an interface/abstraction (that it owns). Low-level classes will implement the interface, thus inverting the dependency.

I wonder, how is it applied in object-oriented languages with no interface? For example, I'm not an expert in Ruby, but it seems that in this language you can't define interfaces like in Java/.NET

asked Apr 17, 2013 at 2:00
1

1 Answer 1

9

Even though you don't have explicit interfaces in dynamic languages, the dependency inversion principle can be followed by writing the client code against an abstract representation of the dependency, which the concrete "implementers" will adhere to via duck typing.

In a sense, that's the default in a dynamic language, and it could be argued that the dependency inversion principle is followed without any conscious effort. But, in practice it's worthwhile to consider the abstract representation of your concrete classes, to gain more insight into the domain, and to decouple from any implementation details that don't capture the essence of the abstraction.

answered Apr 17, 2013 at 2:19

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.