C# Concepts 2
C# Concepts 2
// Product Interface
public interface INotification
{
void Send(string message);
}
Simple Factory Pattern - Example
// Concrete Products
public class EmailNotification : INotification
{
public void Send(string message)
{
Console.WriteLine($"Email sent:
{message}");
}
}
Simple Factory Pattern - Example
// Abstract Products
public interface IButton
{
void Render();
}
Abstract Factory Pattern - Example
// Concrete Products for Windows
public class WindowsButton : IButton
{
public void Render()
{
Console.WriteLine("Rendering
Windows Button");
}
}
Abstract Factory Pattern - Example
public class WindowsCheckbox : ICheckbox
{
public void Render()
{
Console.WriteLine("Rendering
Windows Checkbox");
}
}
Abstract Factory Pattern - Example
// Concrete Products for macOS
public class MacButton : IButton
{
public void Render()
{
Console.WriteLine("Rendering
Mac Button");
}
}
Abstract Factory Pattern - Example
// Abstract Factory
public interface IGUIFactory
{
IButton CreateButton();
ICheckbox CreateCheckbox();
}
Abstract Factory Pattern - Example
// Concrete Factories
public class WindowsFactory : IGUIFactory
{
public IButton CreateButton()
{
return new WindowsButton();
}