Enforcing the Factory Mechanism

For reasons mentioned above, entity, facade and process objects should be created only by using their associated factory classes. Developers should not bypass this mechanism by using the new keyword to instantiate these classes. This can and should be enforced by making all implementation classes (i.e. all classes in the impl packages) abstract. Failure to make these classes abstract means that there is a risk of developers instantiating them directly with the result that class replacement will not work as expected.