IUIFactory windowsFactory = new WindowsUIFactory();
Button windowsButton = windowsFactory.CreateButton();
Checkbox windowsCheckbox = windowsFactory.CreateCheckbox();
windowsCheckbox.Render();
IUIFactory macFactory = new MacOSUIFactory();
Button macButton = macFactory.CreateButton();
Checkbox macCheckbox = macFactory.CreateCheckbox();
public abstract class Button
public abstract void Render();
public class WindowsButton : Button
public override void Render()
Console.WriteLine("Rendering a Windows button.");
public class MacOSButton : Button
public override void Render()
Console.WriteLine("Rendering a macOS button.");
public abstract class Checkbox
public abstract void Render();
public class WindowsCheckbox : Checkbox
public override void Render()
Console.WriteLine("Rendering a Windows checkbox.");
public class MacOSCheckbox : Checkbox
public override void Render()
Console.WriteLine("Rendering a macOS checkbox.");
public interface IUIFactory
Checkbox CreateCheckbox();
public class WindowsUIFactory : IUIFactory
public Button CreateButton()
return new WindowsButton();
public Checkbox CreateCheckbox()
return new WindowsCheckbox();
public class MacOSUIFactory : IUIFactory
public Button CreateButton()
return new MacOSButton();
public Checkbox CreateCheckbox()
return new MacOSCheckbox();