Skip to content

Commit

Permalink
implement simple factory pattern, and split responsibility of creatin…
Browse files Browse the repository at this point in the history
…g dependent instance from context to SimpleFactory class
  • Loading branch information
hatelove committed Feb 24, 2015
1 parent 966679f commit f0e40d1
Showing 1 changed file with 25 additions and 23 deletions.
48 changes: 25 additions & 23 deletions SimpleFactoryLegacy/ShipService.cs
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -55,45 +55,47 @@ public void Ship(Order order)


public class ShipService public class ShipService
{ {
private FamilyService _family = new FamilyService(); //private FamilyService _family = new FamilyService();


private SevenService _seven = new SevenService(); //private SevenService _seven = new SevenService();


public void ShippingByStore(List<Order> orders) public void ShippingByStore(List<Order> orders)
{ {
//// handle seven's orders
//var ordersBySeven = orders.Where(x => x.StoreType != StoreType.Family);
//var sevenService = new SevenService();
//foreach (var order in ordersBySeven)
//{
// sevenService.Ship(order);
//}

//// handle family's orders
//var ordersByFamily = orders.Where(x => x.StoreType == StoreType.Family);
//var familyService = new FamilyService();
//foreach (var order in ordersByFamily)
//{
// familyService.Ship(order);
//}

foreach (var order in orders) foreach (var order in orders)
{ {
// strategy pattern implementation // simple factory pattern implementation
IStoreService storeService = GetStoreService(order); IStoreService storeService = SimpleFactory.GetStoreService(order);
storeService.Ship(order); storeService.Ship(order);
} }
} }


private IStoreService GetStoreService(Order order) //private IStoreService GetStoreService(Order order)
//{
// if (order.StoreType == StoreType.Family)
// {
// return this._family;
// }
// else
// {
// return this._seven;
// }
//}
}

public class SimpleFactory
{
private static IStoreService sevenService = new SevenService();
private static IStoreService familyService = new FamilyService();

public static IStoreService GetStoreService(Order order)
{ {
if (order.StoreType == StoreType.Family) if (order.StoreType == StoreType.Family)
{ {
return this._family; return sevenService;
} }
else else
{ {
return this._seven; return familyService;
} }
} }
} }
Expand Down

0 comments on commit f0e40d1

Please sign in to comment.