Encapsulate Classes With Factory

Problem:

Clients directly instantiate classes that reside in one package and implement a common interface.

Solution:

Make the class constructors non-public and let clients create instances of them using a Factory.