Gamma’s second principle of good OO design is to: Favor object composition over class inheritance . Systems that follow this rule have fewer classes and more objects. Their power is in the ways that the objects can interact with each other. It would be important to have good dynamic models.
Read moreHow do you design a class in Java?
There are three ways to design classes: by composition, via inheritance, and via interface . Composition (or aggregation) is achieved by using existing class as a part of a new class. For example, the ArrayStack class includes an array of objects. Inheritance allows you to define a new class in terms of an old class.
Read moreHow do you design a good class?
Designing a good class interface
Read more