Builder

14. März 2020

Es trennt die Konstruktion komplexer Objekte von deren Repräsentationen, wodurch dieselben Konstruktionsprozesse wiederverwendet werden können.

https://de.wikipedia.org/wiki/Erbauer_(Entwurfsmuster)

Beim Builder-Pattern geht es darum, dass die Erzeugung von komplexen Objekten an Builder-Klassen übergeben wird. Dies hat der Vorteil, dass die Erzeugung auch von anderen Komponenten wiederverwendet werden kann.

public class Phone
{
}

public interface IPhoneBuilder
{
    void BuildScreen();
    void BuildOS();
    void BuildBattery();

    Phone Build();
}

public class AndroidBuilder : IPhoneBuilder
{
    public void BuildBattery()
    {
    }

    public void BuildOS()
    {
    }

    public void BuildScreen()
    {
    }

    public Phone Build()
    {
    }
}

public class ApplePhoneBuilder : IPhoneBuilder
{
    public void BuildBattery()
    {
    }

    public void BuildOS()
    {
    }

    public void BuildScreen()
    {
    }

    public Phone Build()
    {
    }
}

public class PhoneManufacterer
{
    public Phone Build(IPhoneBuilder phoneBuilder)
    {
        phoneBuilder.BuildBattery();
        phoneBuilder.BuildScreen();
        phoneBuilder.BuildOS();

        return phoneBuilder.Build();
    }
}

class Program
{
    static void Main(string[] args)
    {
        var manufacterer = new PhoneManufacterer();

        var applePhoneBuilder = new ApplePhoneBuilder();
        var phone = manufacterer.Build(applePhoneBuilder);
    }
}