C# How to implement the abstract factory pattern to hide implementation of the concrete class

The abstract factory pattern delegates responsiblity of instantiation of the concrete class to another object. The abstract factory can have several different type of factories that it requests object generation with. In this example, I have built an BusinessView Factory for mapping my entity framework class data generated by code first into my business view classes.

From my unit of work repository pattern, I invoke the GetEmployeesBySupervisorId method which returns a list of EmployeeView objects. Within the GetEmployeesBySupervisorId method I use linq code to extract a query resultset of employees. Each employee is mapped to the employeeview business view class by use of the abstract factory using the business view class constructor. The Abstract factory has two abstract methods which with overrides in the concrete application class: MapSupervisorView and MapEmployeeView. The result is separation of concerns. The result is the implementation of the concrete class is hidden from the client.

The use of the abstract factory pattern will allow millions of developers to participate in building of my Millennium ERP without having to contend for resource. Contention is not of God, therefore, we must build abstract models that reduce programmer contention.