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