Journal of Object-Oriented Programming 13:10 (2001) 28–31
Families are groups of classes that are related by genus, that is, by having one common ancestor. Typical examples of families are numbers, collections and geometrical shapes, which are usually realized as subhierarchies of a global class hierarchy. The Family pattern adds virtual instance creation to these subhierarchies and suggests that certain operations on family members should be implemented as factories returning instances of the appropriate type. Thus, the pattern ensures that clients of the family are always provided with instances that best suit their needs.