Inherit, Delegate, or Forwarding?

J

James Edward Gray II

When do you guys choose to inherit from a class, use a delegate, or
forwarding?

As the saying goes, "Favor composition over inheritance." The theory
there is simply that inheritance is a tighter coupling than
composition, so the latter handles change better. Delegation is a
form of composition.

Any Design Patterns book will have a detailed treatment of this very
topic.
What are some examples of common uses for Delegates or Forwardable?

Well, I wrote the documentation for both, and I must confess that I
still rarely use Delegate. It can think of one example where I
wanted full delegation and I wanted it for two classes, so I had to
roll my own anyway. The best example I can think of for it is
TempFile[1], in the standard library.

I use forwardable all the time, on the other hand. I love that
library. It allows me to control what gets delegated and rename
delegated methods. Good stuff. Two examples from my work would be
my solution-in-progress to the Ruby Test First Challenge[2] and my
FasterCSV library[3].

Hope that helps.

1: http://stonecode.org:3000/articles/show_all
2: http://groups.google.com/group/Ruby-Test-First-Challenge/msg/
1df37a6f0b781a88
3: http://rubyforge.org/plugins/scmsvn/viewcvs.php/trunk/lib/
faster_csv.rb?root=fastercsv&view=markup

James Edward Gray II
 
D

Daniel Berger

James said:
I use forwardable all the time, on the other hand. I love that
library. It allows me to control what gets delegated and rename
delegated methods. Good stuff. Two examples from my work would be my
solution-in-progress to the Ruby Test First Challenge[2] and my
FasterCSV library[3].

Note that, with some help, I revamped forwardable.rb and it has been
tentatively accepted by Matz for 2.0. The current version has lots of warning
spewage.

http://rubyforge.org/tracker/index.php?func=detail&aid=1923&group_id=426&atid=1700

Regards,

Dan
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,175
Messages
2,570,947
Members
47,498
Latest member
yelene6679

Latest Threads

Top