Reuse through composition (1)
• Requires carefully designed interfaces
• Doesn’t break encapsulation
– Any object can be replaced by another at run-
time if it implements the same interface
– Fewer implementation dependencies
• Helps design
– keeping each class encapsulated forces you
to keep classes simple