Created
May 13, 2018 14:12
-
-
Save miteshsureja/11ffe894e8777aba03f9c15553ba2ddb to your computer and use it in GitHub Desktop.
Template Method Design Pattern
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
namespace TemplatePattern | |
{ | |
//Template abstract class | |
public abstract class OrderTemplate | |
{ | |
public abstract void SelectProduct(); | |
public abstract void Payment(); | |
public abstract void Deliver(); | |
public void ProcessOrder() | |
{ | |
SelectProduct(); | |
Payment(); | |
Deliver(); | |
} | |
} | |
//concrete classe | |
public class OnLineOrder : OrderTemplate | |
{ | |
public override void Deliver() | |
{ | |
Console.WriteLine("Product shipped via courier"); | |
} | |
public override void Payment() | |
{ | |
Console.WriteLine("Online payment done successfully"); | |
} | |
public override void SelectProduct() | |
{ | |
Console.WriteLine("Product added to cart successfully"); | |
} | |
} | |
//concrete class | |
public class StoreOrder : OrderTemplate | |
{ | |
public override void Deliver() | |
{ | |
Console.WriteLine("Product delivered to customer at counter"); | |
} | |
public override void Payment() | |
{ | |
Console.WriteLine("Paid at counter"); | |
} | |
public override void SelectProduct() | |
{ | |
Console.WriteLine("Product is selected by customer from rack in store"); | |
} | |
} | |
class Program | |
{ | |
//entry point | |
static void Main(string[] args) | |
{ | |
Console.WriteLine("----------- Online Order Process -----------"); | |
OrderTemplate onlineOrder = new OnLineOrder(); | |
onlineOrder.ProcessOrder(); | |
Console.WriteLine("----------- Retail Store Order Process -----------"); | |
OrderTemplate storeOrder = new StoreOrder(); | |
storeOrder.ProcessOrder(); | |
Console.Read(); | |
} | |
} | |
} |
Author
miteshsureja
commented
May 13, 2018
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment