What are Inversion of Control (IoC), DIP, DI, and IoC Container?

Many developers are confused about DIP, IoC, DI, and IoC Container. Well, we've been using the concept even the from the DOS mode era. It’s only when SOLID OOP Design and Design Patterns were introduced that made this popular. It is the D in the SOLID acronym which stands for Dependency Inversion Principle. New concepts were added of course.

Adapter Design Pattern

A Software Design Pattern that allows the interface of an existing class to be used from another interface. It is often used to make existing classes work with others without modifying their source code.

Unit of Work Design Pattern

Maintains a list of objects affected by a business transaction and coordinates the writing out of changes and the resolution of concurrency problems.

Prototype Design Pattern

Specifying the kinds of objects to create using a prototypical instance, and create new objects by copying this prototype. Instead of using new keyword to create objects, prototype design pattern will just copy the object created. It’s a clone. A photo copier would the best example in the real world that resembles this pattern.

Singleton Design Pattern

In software engineering, the singleton pattern is a design pattern that restricts the instantiation of a class to one object.  This pattern ensures that a class has only one instance and provides a global point of access to it. This is considered of the the simplest  design pattern.

Builder Design Pattern

The purpose of Builder Design Pattern is to separate the construction of complex object from its representation so that the same construction process can create different representation. It is usually use in building complex objects by using a step by step approach.

Abstract Factory Design Pattern

Abstract Factory patterns acts a super-factory which creates other factories. This pattern is also called as Factory of factories. In Abstract Factory pattern an interface is responsible for creating a set of related objects, or dependent objects without specifying their concrete classes.

Strategy Design Pattern

In computer programming, the strategy pattern (also known as the policy pattern) is a software design pattern that enables an algorithm's behavior to be selected at runtime. The strategy pattern
  • defines a family of algorithms,
  • encapsulates each algorithm, and
  • makes the algorithms interchangeable within that family.

Factory Design Pattern

In class-based programming, the factory method pattern is a creational pattern which uses factory methods to deal with the problem of creating objects without specifying the exact class of object that will be created. This is done by creating objects via a factory method, which is either specified in an interface (abstract class) and implemented in implementing classes (concrete classes); or implemented in a base class (optionally as a template method), which can be overridden when inherited in derived classes; rather than by a constructor.


Repository Design Pattern : Implementing Generics, MOQ, MSTEST In ASP.NET MVC

Repository Design Pattern is a way to encapsulate repetitive data access code.

Repository Pattern is effective data access design pattern when we want to:
  • Increase testability of the application. Make test repeatable without touching the data source;
  • Implement Separation of Concerns between the business logic and data source or business logic and test units;
  • Make the application work with different data source such SQL Server, mySQL, Oracle, web api endpoints, xml file and other RDBMS out in the market.
  • Make our code reusable. Effective on CRUD.