public static void Main()
var builder = Pedido.Builder;
var p1 = builder.WithId("135").Build();
var p2 = builder.WithId("246").Build();
var p3 = builder.Build();
Console.WriteLine(p1.Equals(p2));
Console.WriteLine(p1.Equals(p3));
Console.WriteLine(p2.Equals(p3));
internal string PedidoId { get; private set; }
internal static IPedidoBuilder Builder { get { return new PedidoBuilder(); } }
private Pedido(string id)
public class PedidoBuilder : Pedido, IPedidoBuilder
internal PedidoBuilder() : base(){}
public IPedidoBuilder WithId(string id)
return (IPedidoBuilder)this;
return new Pedido(this.PedidoId);
public interface IPedidoBuilder : IBuilder<Pedido>
IPedidoBuilder WithId(string id);
public interface IBuilder<T>