Abstract Factory

Every member of an organization has a benefit package.

The benefit package consists of a retirement benefit and a health benefit.

There are two types of each benefit: basic and premium:

For example, a basic benefit package consists of a basic health benefit and a basic retirement benefit.

A premium benefit package consists of a premium health benefit and a premium retirement benefit.

A temporary member might have a benefit package consisting of a basic retirement benefit and a premium health benefit.

A member with a spouse who is also a member might have a premium retirement benefit and a basic health benefit.

Implement the above in Java.

Show how you would use the Abstract Factory Pattern to implement the BenefitPackage constructor.