Chris's coding blog

C# Design Patterns: the Façade pattern

April 14, 2009


Access multiple classes in one simple to use class. This class is often static too.


A common use of the Façade pattern is with data access managers, a façade class that contains only static methods for CRUD operations. Another example might be a class that handles payment in an online store. This façade class would link into multiple payment providers (paypal, visa/mastercard) as well as updating any order details in a database table. Rather than making the UI perform 10-20 lines of code, this could be done in a simple CheckoutManager.ProcessPayment(…) method.

public class UserManager
// The main implementation of IRepository would be internal to your Core/Domain project,
// so consumers of your API couldn't change the database directlry without going through
// your façade classes.
private IRepository _repository;
public UserManager()
_repository = new SqlRepository("some connection string from a config file");
public UserManager(IRepository repository)
_repository = repository;
public User GetById(Guid id)
return _repository.ExecuteSql<User>("SELECT * FROM User WHERE Id=@Id", id)
public User GetByEmail(string email)
return _repository.ExecuteSql<User>("SELECT * FROM User WHERE Email=@Email", email)
// more methods User-specific methods.
view raw gistfile1.cs hosted with ❤ by GitHub


I'm Chris Small, a software engineer working in London. This is my tech blog. Find out more about me via GithubStackoverflowResume