public class Car {
private final String make;
private final String model;
private final int year;
private Car(Builder builder) {
this.make = builder.make;
this.model = builder.model;
this.year = builder.year;
}
public static class Builder {
private String make;
private String model;
private int year;
public Builder make(String make) {
this.make = make;
return this;
}
public Builder model(String model) {
this.model = model;
return this;
}
public Builder year(int year) {
this.year = year;
return this;
}
public Car build() {
return new Car(this);
}
}
}
class Car {
make: string;
model: string;
year: number;
constructor(builder: CarBuilder) {
this.make = builder.make;
this.model = builder.model;
this.year = builder.year;
}
}
class CarBuilder {
make: string;
model: string;
year: number;
setMake(make: string): CarBuilder {
this.make = make;
return this;
}
setModel(model: string): CarBuilder {
this.model = model;
return this;
}
setYear(year: number): CarBuilder {
this.year = year;
return this;
}
build(): Car {
return new Car(this);
}
}
package main
type Car struct {
make string
model string
year int
}
type CarBuilder struct {
car Car
}
func NewCarBuilder() *CarBuilder {
return &CarBuilder{car: Car{}}
}
func (b *CarBuilder) Make(make string) *CarBuilder {
b.car.make = make
return b
}
func (b *CarBuilder) Model(model string) *CarBuilder {
b.car.model = model
return b
}
func (b *CarBuilder) Year(year int) *CarBuilder {
b.car.year = year
return b
}
func (b *CarBuilder) Build() Car {
return b.car
}