Forum: Ruby Inherit, Delegate, or Forwarding?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
65bd9e4c5aebde25ebf16d599339d570?d=identicon&s=25 Adam Sanderson (Guest)
on 2006-01-05 19:57
(Received via mailing list)
When do you guys choose to inherit from a class, use a delegate, or
forwarding?
What are some examples of common uses for Delegates or Forwardable?

I have these fuzzy notions of times they may be useful, but some common
examples would be nice.

Any thought?
  .adam


For reference:
[Forwardable]
http://ruby-doc.org/stdlib/libdoc/forwardable/rdoc...
[Delegate] http://ruby-doc.org/stdlib/libdoc/delegate/rdoc/index.html
4299e35bacef054df40583da2d51edea?d=identicon&s=25 James Gray (bbazzarrakk)
on 2006-01-05 23:24
(Received via mailing list)
On Jan 5, 2006, at 12:12 PM, Adam Sanderson wrote:

> 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-Cha...
1df37a6f0b781a88
3:  http://rubyforge.org/plugins/scmsvn/viewcvs.php/trunk/lib/
faster_csv.rb?root=fastercsv&view=markup

James Edward Gray II
F3b7b8756d0c7f71cc7460cc33aefaee?d=identicon&s=25 Daniel Berger (Guest)
on 2006-01-06 00:00
(Received via mailing list)
James Edward Gray II wrote:

> 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...

Regards,

Dan
This topic is locked and can not be replied to.