Union Pattern
¥The union pattern is used to represent different forms of related data with some common behavior. 
¥The pattern consists of an abstract class A together with a collection of variant subclasses B1, ..., BN extending A.  An abstract class cannot be instantiated using new.
¥The collection of classes A, B1, ..., BN is called a union hierarchy and  A classes is called the root class of the hierarchy.
¥The common behavior is codified by a set of methods in A, which may be abstract  Each such method m has an associated contract that that the implementation in each variant class must obey.