interface IDbContext { void Add(...); } class MSSQLDb : IDbContext { public void Add(...) { // Saving to MSSQL... } } class BrowserDb : IDbContext { public void Add(...) { // Saving to cookies... } } interface ICart { void Add(Product product); void Checkout(); } class Cart : ICart { IDbContext storage = new MSSQLDb(); public void Add(Product product) { storage.Add(product); } public void Checkout() { } } class CartProxy : ICart { IDbContext storage = new BrowserDb(); public void Add(Product product) { storage.Add(product); } public void Checkout() { ICart cart = new Cart(); cart.Add(); } }