In order for a Class A
to create an instance of Class B, A must have a reference to B, which means that
class B must be instantiated and a reference to object B must be available to A.
A has a direct reference to B and they are tightly coupled.
In order to reduce
tight coupling between these two objects, it is best to give the responsibility
of creating B to a factory class using Reflection. It then becomes less coupled.
Reflection is used to
dynamically create an instance of a type, bind the type to an existing object,
or get the type from an existing object. In this example, we implement Concrete
Factory Pattern using Reflection to fetch records from MS-Access and MS-SQL
Database. It is possible to configure this application to retrieve data from
Oracle DB also.