Task - Design Patterns - Builder Pattern #61
Replies: 24 comments
-
package design_patterns.creational;
class Engine {
String type;
public Engine(String type) {
this.type = type;
}
@Override
public String toString() {
return "Engine type is" + this.type;
}
}
interface CarPlan {
void setSeats(int seats);
void setEngine(Engine engine);
void setTripComputer(String tripComputer);
void setGPS(String gps);
}
class Car implements CarPlan {
private int seats;
private Engine engine;
private String tripComputer;
private String gps;
@Override
public void setEngine(Engine engine) {
this.engine = engine;
}
@Override
public void setSeats(int seats) {
this.seats = seats;
}
@Override
public void setGPS(String gps) {
this.gps = gps;
}
@Override
public void setTripComputer(String tripComputer) {
this.tripComputer = tripComputer;
}
@Override
public String toString() {
return "Car [engine=" + engine + ", gps=" + gps + ", seats=" + seats + ", tripComputer=" + tripComputer + "]";
}
}
interface CarBuilder {
void reset();
void buildSeats();
void buildEngine();
void buildTripComputer();
void buildGPS();
Car getCar();
}
class SportsCarBuilder implements CarBuilder {
private Car car;
SportsCarBuilder() {
this.car = new Car();
}
@Override
public void buildEngine() {
Engine engine = new Engine("V8");
car.setEngine(engine);
}
@Override
public void buildGPS() {
car.setGPS("GPS Active");
}
@Override
public void buildSeats() {
car.setSeats(5);
}
@Override
public void buildTripComputer() {
car.setTripComputer("Trip Computer active");
}
@Override
public void reset() {
this.car = new Car();
}
@Override
public Car getCar() {
return this.car;
}
}
class SUVCarBuilder implements CarBuilder {
private Car car;
SUVCarBuilder() {
this.car = new Car();
}
@Override
public void buildEngine() {
Engine engine = new Engine("V6");
car.setEngine(engine);
}
@Override
public void buildGPS() {
car.setGPS("GPS Active");
}
@Override
public void buildSeats() {
car.setSeats(7);
}
@Override
public void buildTripComputer() {
car.setTripComputer("Trip Computer active");
}
@Override
public void reset() {
this.car = new Car();
}
@Override
public Car getCar() {
return this.car;
}
}
class Director {
private CarBuilder carBuilder;
public Director(CarBuilder carBuilder) {
this.carBuilder = carBuilder;
}
public void buildCar() {
this.carBuilder.buildEngine();
this.carBuilder.buildGPS();
this.carBuilder.buildSeats();
this.carBuilder.buildTripComputer();
}
public Car getCar() {
return this.carBuilder.getCar();
}
}
public class BuilderPatternEg {
public static void main(String[] args) {
CarBuilder sportsCarBuilder = new SportsCarBuilder();
Director director = new Director(sportsCarBuilder);
director.buildCar();
Car car = director.getCar();
System.out.println(car);
}
} |
Beta Was this translation helpful? Give feedback.
-
interface Builder {
void setSeats(int number);
void setEngine(Engine engine);
void setTripComputer(String tripComputer);
void setGPS(String gps);
}
class Engine {
private double volume;
private double mileage;
Engine() {
}
public Engine(double volume, double mileage) {
this.volume = volume;
this.mileage = mileage;
}
@Override
public String toString() {
return "volume - " + volume + "; mileage - " + mileage;
}
}
class Car implements Builder {
private int seats;
private Engine engine;
private String tripComputer;
private String gps;
public void setSeats(int seats) {
this.seats = seats;
}
public void setEngine(Engine engine) {
this.engine = engine;
}
public void setTripComputer(String tripComputer) {
this.tripComputer = tripComputer;
}
public void setGPS(String gps) {
this.gps = gps;
}
@Override
public String toString() {
return "Count of seats: " + seats + "\nEngine: " + engine + "\nTrip Computer: "
+ tripComputer + "\nGPS Navigator: " + gps + "\n";
}
}
interface CarBuilder {
void reset();
void buildSeats();
void buildEngine();
void buildTripComputer();
void buildGPS();
Car getResult();
}
class SUVCarBuilder implements CarBuilder {
private Car car;
@Override
public void reset() {
System.out.println("Type of car:\nSUV_CAR\n");
this.car = new Car();
}
@Override
public void buildSeats() {
car.setSeats(4);
}
@Override
public void buildEngine() {
car.setEngine(new Engine(5.0, 40.0));
}
@Override
public void buildTripComputer() {
car.setTripComputer("Not Functional");
}
@Override
public void buildGPS() {
car.setGPS("Not Functional");
}
@Override
public Car getResult() {
return car;
}
}
class SportsCarBuilder implements CarBuilder {
private Car car;
@Override
public void reset() {
System.out.println("Type of car:\nSPORTS_CAR\n");
this.car = new Car();
}
@Override
public void buildSeats() {
car.setSeats(2);
}
@Override
public void buildEngine() {
car.setEngine(new Engine(3.0, 0.0));
}
@Override
public void buildTripComputer() {
car.setTripComputer("Functional");
}
@Override
public void buildGPS() {
car.setGPS("Functional");
}
@Override
public Car getResult() {
return car;
}
}
class Director {
private CarBuilder carBuilder;
Director(CarBuilder carBuilder) {
this.carBuilder = carBuilder;
}
public void makeSUVCar(CarBuilder carBuilder) {
carBuilder.reset();
carBuilder.buildSeats();
carBuilder.buildEngine();
carBuilder.buildTripComputer();
carBuilder.buildGPS();
}
public void makeSportsCar(CarBuilder carBuilder1) {
carBuilder1.reset();
carBuilder1.buildSeats();
carBuilder1.buildEngine();
carBuilder1.buildTripComputer();
carBuilder1.buildGPS();
}
public Car getResult() {
return this.carBuilder.getResult();
}
}
public class CarClient {
public static void main(String[] args) {
CarBuilder builder1 = new SportsCarBuilder();
Director director1 = new Director(builder1);
director1.makeSportsCar(builder1);
Car car1 = builder1.getResult();
System.out.println("Car Built:\n" + car1);
CarBuilder builder2 = new SUVCarBuilder();
Director director2 = new Director(builder2);
director2.makeSUVCar(builder2);
Car car2 = builder2.getResult();
System.out.println("Car Built:\n" + car2);
}
} |
Beta Was this translation helpful? Give feedback.
-
class Engine {
double volume;
double mileage;
Engine() {
}
public Engine(double volume, double mileage) {
this.volume = volume;
this.mileage = mileage;
}
@Override
public String toString() {
return "Engine: mileage=" + mileage + ", volume=" + volume;
}
}
class SportEngine extends Engine {
SportEngine() {
}
public SportEngine(double volume, double mileage) {
super(volume, mileage);
}
}
class Car {
private int seats;
private Engine engine;
private String GPS;
private String tripComputer;
public int getSeats() {
return seats;
}
public void setSeats(int seats) {
this.seats = seats;
}
public Engine getEngine() {
return engine;
}
public void setEngine(Engine engine) {
this.engine = engine;
}
public String getGPS() {
return GPS;
}
public void setGPS() {
this.GPS = "Functional";
}
public String getTripComputer() {
return tripComputer;
}
public void setTripComputer() {
this.tripComputer = "Functional";
}
@Override
public String toString() {
return "Car [GPS=" + GPS + ", engine=" + engine + ", seats=" + seats + ", tripComputer=" + tripComputer + "]";
}
}
interface Builder {
void reset();
void setSeats(int number);
void setEngine(Engine engine);
void setTripComputer();
void setGPS();
}
class CarBuilder implements Builder {
private Car car;
CarBuilder() {
this.reset();
}
public void reset() {
this.car = new Car();
}
public void setSeats(int number) {
car.setSeats(number);
}
public void setEngine(Engine engine) {
car.setEngine(engine);
}
public void setTripComputer() {
car.setTripComputer();
}
public void setGPS() {
car.setGPS();
}
public Car getResult() {
return car;
}
}
class AutomobileEngineer { // Director
private Builder builder;
public AutomobileEngineer() {
}
public AutomobileEngineer(Builder builder) {
this.builder = builder;
}
public void makeSUV(Builder builder) {
builder.reset();
builder.setSeats(4);
builder.setEngine(new Engine(2, 1.2));
builder.setTripComputer();
builder.setGPS();
System.out.println("Type of car: SUV");
}
public void makeSportsCar(Builder builder) {
builder.reset();
builder.setSeats(2);
builder.setEngine(new SportEngine(3, 0));
builder.setTripComputer();
builder.setGPS();
System.out.println("Type of car: SPORTS CAR");
}
}
public class CarBuilderDriver {
public static void main(String[] args) {
AutomobileEngineer engineer = new AutomobileEngineer();
CarBuilder builder = new CarBuilder();
engineer.makeSportsCar(builder);
System.out.println("Car built");
Car car = builder.getResult();
System.out.println(car);
engineer.makeSUV(builder);
System.out.println("Car built");
Car car1 = builder.getResult();
System.out.println(car1);
}
} |
Beta Was this translation helpful? Give feedback.
-
class Engine {
private double volume;
private double mileage;
public Engine(double volume, double mileage) {
this.volume = volume;
this.mileage = mileage;
}
@Override
public String toString() {
return "[mileage=" + mileage + ", volume=" + volume + "]";
}
}
class SportEngine extends Engine {
public SportEngine() {
super(3.0, 10);
}
@Override
public String toString() {
return "SportEngine " + super.toString();
}
}
class SuvEngine extends Engine {
public SuvEngine() {
super(4.0, 25);
}
@Override
public String toString() {
return "SuvEngine " + super.toString();
}
}
class Car {
private int seats;
private Engine engine;
private String tripComputer;
private String gps;
public int getSeats() {
return seats;
}
public void setSeats(int seats) {
this.seats = seats;
}
public Engine getEngine() {
return engine;
}
public void setEngine(Engine engine) {
this.engine = engine;
}
public String getTripComputer() {
return tripComputer;
}
public void setTripComputer(String tripComputer) {
this.tripComputer = tripComputer;
}
public String getGps() {
return gps;
}
public void setGps(String gps) {
this.gps = gps;
}
@Override
public String toString() {
return "Car [engine=" + engine + ", gps=" + gps + ", seats=" + seats + ", tripComputer=" + tripComputer + "]";
}
}
interface Builder {
void reset();
void setSeats(int number);
void setEngine(Engine engine);
void setTripComputer();
void setGps();
}
class CarBuilder implements Builder {
private Car car;
@Override
public void reset() {
this.car = new Car();
}
@Override
public void setSeats(int number) {
this.car.setSeats(number);
}
@Override
public void setEngine(Engine engine) {
this.car.setEngine(engine);
}
@Override
public void setTripComputer() {
this.car.setTripComputer("Functional");
}
@Override
public void setGps() {
this.car.setGps("Functional");
}
public Car getResult() {
return this.car;
}
}
class Director {
void makeSUV(Builder builder) {
builder.reset();
builder.setSeats(7);
builder.setEngine(new SuvEngine());
builder.setTripComputer();
builder.setGps();
}
void makeSportsCar(Builder builder) {
builder.reset();
builder.setSeats(2);
builder.setEngine(new SportEngine());
builder.setTripComputer();
builder.setGps();
}
}
public class BuilderDemo {
public static void main(String[] args) {
Director director = new Director();
CarBuilder builder1 = new CarBuilder();
director.makeSUV(builder1);
Car suv = builder1.getResult();
System.out.println(suv);
CarBuilder builder2 = new CarBuilder();
director.makeSportsCar(builder2);
Car sportsCar = builder2.getResult();
System.out.println(sportsCar);
}
} |
Beta Was this translation helpful? Give feedback.
-
package design_patterns.builder_pattern;
class Engine {
Double volume;
Double mileage;
public Engine(Double volume, Double mileage) {
this.volume = volume;
this.mileage = mileage;
}
@Override
public String toString() {
return "volume - " + volume + "; mileage - " + mileage;
}
}
class SportsEngine extends Engine {
public SportsEngine(Double volume, Double mileage) {
super(volume, mileage);
}
@Override
public String toString() {
return super.toString();
}
}
class SUVEngine extends Engine {
public SUVEngine(Double volume, Double mileage) {
super(volume, mileage);
}
@Override
public String toString() {
return super.toString();
}
}
class Car {
private int seats;
private Engine engine;
private String tripComputer;
private String gps;
public int getSeats() {
return seats;
}
public void setSeats(int seats) {
this.seats = seats;
}
public Engine getEngine() {
return engine;
}
public void setEngine(Engine engine) {
this.engine = engine;
}
public String getTripComputer() {
return tripComputer;
}
public void setTripComputer() {
this.tripComputer = "Functional";
}
public String getGps() {
return gps;
}
public void setGps() {
this.gps = "Functional";
}
@Override
public String toString() {
return "Engine:" + engine + "\n" + "GPS :" + gps + "\n" + "Seats:" + seats + "\n"
+ "Trip Computer:" + tripComputer;
}
}
interface CarPlan {
void reset();
void setSeats(int seats);
void setEngine(Engine engine);
void setTripComputer();
void setGPS();
}
class CarBuilder implements CarPlan {
private Car car;
CarBuilder() {
this.reset();
}
public void reset() {
this.car = new Car();
}
public void setSeats(int number) {
car.setSeats(number);
}
public void setEngine(Engine engine) {
car.setEngine(engine);
}
public void setTripComputer() {
car.setTripComputer();
}
public void setGPS() {
car.setGps();
}
public Car getResult() {
return car;
}
}
class Director {
public Director() {
}
public void makeSUV(CarBuilder carBuilder) {
System.out.println("Type of car: SUV");
carBuilder.reset();
carBuilder.setSeats(8);
carBuilder.setEngine(new SUVEngine(5.0, 10.0));
carBuilder.setTripComputer();
carBuilder.setGPS();
}
public void makeSports(CarBuilder carBuilder) {
System.out.println("Type of car: SPORTS_CAR");
carBuilder.reset();
carBuilder.setSeats(4);
carBuilder.setEngine(new SportsEngine(4.0, 8.0));
carBuilder.setTripComputer();
carBuilder.setGPS();
}
}
public class BuilderPattern {
public static void main(String[] args) {
CarBuilder carBuilder1 = new CarBuilder();
Director director = new Director();
director.makeSUV(carBuilder1);
System.out.println(carBuilder1.getResult());
System.out.println();
director.makeSports(carBuilder1);
System.out.println(carBuilder1.getResult());
}
} |
Beta Was this translation helpful? Give feedback.
-
interface Builder {
void reset();
void setSeats(int seats);
void setEngine();
void setTripComputer();
void setGPSNavigator();
void setCarType();
}
class Engine {
private double volume;
private double mileage;
public Engine(double volume, double mileage) {
this.volume = volume;
this.mileage = mileage;
}
public double getVolume() {
return volume;
}
public double getMileage() {
return mileage;
}
@Override
public String toString() {
return "Engine: volume -" + volume + "; mileage -" + mileage;
}
}
enum CarType {
SPORTS_CAR, SUV
}
class Car {
private CarType type;
private int seats;
private Engine engine;
private String tripComputer;
private String gpsNavigator;
public int getSeats() {
return seats;
}
public CarType getType() {
return type;
}
public void setType(CarType type) {
this.type = type;
}
public void setSeats(int seats) {
this.seats = seats;
}
public Engine getEngine() {
return engine;
}
public void setEngine(Engine engine) {
this.engine = engine;
}
public String getTripComputer() {
return tripComputer;
}
public void setTripComputer(String tripComputer) {
this.tripComputer = tripComputer;
}
public String getGpsNavigator() {
return gpsNavigator;
}
public void setGpsNavigator(String gpsNavigator) {
this.gpsNavigator = gpsNavigator;
}
@Override
public String toString() {
return "Car built:\n" + type + "\nCar manual built: \nType of car:" + type + "\nCount of seats: " + seats
+ "\n"
+ engine + "\ngpsNavigator: " + gpsNavigator + "\nTrip Computer: " + tripComputer;
}
}
interface carBuilder extends Builder {
@Override
public void reset();
@Override
public void setEngine();
@Override
public void setCarType();
@Override
public void setGPSNavigator();
@Override
public void setSeats(int seats);
@Override
public void setTripComputer();
public Car getResult();
}
class SuvBuilder implements carBuilder {
private Car car;
@Override
public void reset() {
this.car = new Car();
}
@Override
public void setEngine() {
car.setEngine(new Engine(2, 1.2));
}
@Override
public void setCarType() {
car.setType(CarType.SUV);
}
@Override
public void setGPSNavigator() {
car.setGpsNavigator("Functional");
}
@Override
public void setSeats(int seats) {
car.setSeats(seats);
}
@Override
public void setTripComputer() {
car.setTripComputer("Functional");
}
public Car getResult() {
return car;
}
}
class SuperBuilder implements carBuilder {
private Car car;
@Override
public void reset() {
this.car = new Car();
}
@Override
public void setEngine() {
car.setEngine(new Engine(3.0, 0));
}
@Override
public void setCarType() {
car.setType(CarType.SPORTS_CAR);
}
@Override
public void setGPSNavigator() {
car.setGpsNavigator("Functional");
}
@Override
public void setSeats(int seats) {
car.setSeats(seats);
}
@Override
public void setTripComputer() {
car.setTripComputer("Functional");
}
public Car getResult() {
return car;
}
}
class Director {
public void createCar(Builder builder) {
builder.reset();
builder.setSeats(2);
builder.setEngine();
builder.setTripComputer();
builder.setGPSNavigator();
builder.setCarType();
}
}
public class Demo {
public static void main(String[] args) {
Director director = new Director();
carBuilder suvBuilder = new SuvBuilder();
director.createCar(suvBuilder);
Car suv = suvBuilder.getResult();
System.out.println(suv);
carBuilder sportsBuilder = new SuperBuilder();
director.createCar(sportsBuilder);
Car sports = sportsBuilder.getResult();
System.out.println(sports);
}
}
|
Beta Was this translation helpful? Give feedback.
-
package builderdesign;
class Engine {
private double volume;
private double mileage;
public Engine(double volume, double mileage) {
this.volume = volume;
this.mileage = mileage;
}
@Override
public String toString() {
return "[MILEAGE=" + mileage + ", VOLUME=" + volume + "]";
}
}
class SportEngine extends Engine {
public SportEngine() {
super(3.0, 10);
}
@Override
public String toString() {
return "SportEngine " + super.toString();
}
}
class SuvEngine extends Engine {
public SuvEngine() {
super(4.0, 30);
}
@Override
public String toString() {
return "SuvEngine " + super.toString();
}
}
class Car {
private int seats;
private Engine engine;
private String tripComputer;
private String gps;
public int getSeats() {
return seats;
}
public void setSeats(int seats) {
this.seats = seats;
}
public Engine getEngine() {
return engine;
}
public void setEngine(Engine engine) {
this.engine = engine;
}
public String getTripComputer() {
return tripComputer;
}
public void setTripComputer(String tripComputer) {
this.tripComputer = tripComputer;
}
public String getGps() {
return gps;
}
public void setGps(String gps) {
this.gps = gps;
}
@Override
public String toString() {
return "Car [Engine=" + engine + ", GPS=" + gps + ", SEATS=" + seats + ", TRIPCOMPUTER=" + tripComputer + "]";
}
}
interface Builder {
void reset();
void setSeats(int number);
void setEngine(Engine engine);
void setTripComputer();
void setGps();
}
class CarBuilder implements Builder {
private Car car;
@Override
public void reset() {
this.car = new Car();
}
@Override
public void setSeats(int number) {
this.car.setSeats(number);
}
@Override
public void setEngine(Engine engine) {
this.car.setEngine(engine);
}
@Override
public void setTripComputer() {
this.car.setTripComputer("TRIPPED");
}
@Override
public void setGps() {
this.car.setGps("WORKING");
}
public Car getResult() {
return this.car;
}
}
class Director {
void makeSUV(Builder builder) {
builder.reset();
builder.setSeats(7);
builder.setEngine(new SuvEngine());
builder.setTripComputer();
builder.setGps();
}
void makeSportsCar(Builder builder) {
builder.reset();
builder.setSeats(2);
builder.setEngine(new SportEngine());
builder.setTripComputer();
builder.setGps();
}
}
public class CarBuild {
public static void main(String[] args) {
Director director = new Director();
CarBuilder builder1 = new CarBuilder();
director.makeSUV(builder1);
Car suv = builder1.getResult();
System.out.println(suv);
CarBuilder builder2 = new CarBuilder();
director.makeSportsCar(builder2);
Car sportsCar = builder2.getResult();
System.out.println(sportsCar);
}
} |
Beta Was this translation helpful? Give feedback.
-
package DesignPatterns;
class Engine {
private double volume;
private double mileage;
public Engine(double volume, double mileage) {
this.volume = volume;
this.mileage = mileage;
}
@Override
public String toString() {
return "[mileage=" + mileage + ", volume=" + volume + "]";
}
}
class SportEngine extends Engine {
public SportEngine() {
super(3.0, 10);
}
@Override
public String toString() {
return "SportEngine " + super.toString();
}
}
class SuvEngine extends Engine {
public SuvEngine() {
super(4.0, 25);
}
@Override
public String toString() {
return "SuvEngine " + super.toString();
}
}
class Car {
private int seats;
private Engine engine;
private String tripComputer;
private String gps;
public int getSeats() {
return seats;
}
public void setSeats(int seats) {
this.seats = seats;
}
public Engine getEngine() {
return engine;
}
public void setEngine(Engine engine) {
this.engine = engine;
}
public String getTripComputer() {
return tripComputer;
}
public void setTripComputer(String tripComputer) {
this.tripComputer = tripComputer;
}
public String getGps() {
return gps;
}
public void setGps(String gps) {
this.gps = gps;
}
@Override
public String toString() {
return "Car [engine=" + engine + ", gps=" + gps + ", seats=" + seats + ", tripComputer=" + tripComputer + "]";
}
}
interface Builder {
void reset();
void setSeats(int number);
void setEngine(Engine engine);
void setTripComputer();
void setGps();
}
class CarBuilder implements Builder {
private Car car;
@Override
public void reset() {
this.car = new Car();
}
@Override
public void setSeats(int number) {
this.car.setSeats(number);
}
@Override
public void setEngine(Engine engine) {
this.car.setEngine(engine);
}
@Override
public void setTripComputer() {
this.car.setTripComputer("Functional");
}
@Override
public void setGps() {
this.car.setGps("Functional");
}
public Car getResult() {
return this.car;
}
}
class Director {
void makeSUV(Builder builder) {
builder.reset();
builder.setSeats(7);
builder.setEngine(new SuvEngine());
builder.setTripComputer();
builder.setGps();
}
void makeSportsCar(Builder builder) {
builder.reset();
builder.setSeats(2);
builder.setEngine(new SportEngine());
builder.setTripComputer();
builder.setGps();
}
}
public class CarBuilderDemo {
public static void main(String[] args) {
Director director = new Director();
CarBuilder builder1 = new CarBuilder();
director.makeSUV(builder1);
Car suv = builder1.getResult();
System.out.println(suv);
CarBuilder builder2 = new CarBuilder();
director.makeSportsCar(builder2);
Car sportsCar = builder2.getResult();
System.out.println(sportsCar);
}
} |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
interface Builder {
void setSeats(int number);
void setEngine(Engine engine);
void setTripComputer(String tripComputer);
void setGPS(String gps);
}
class Engine {
private double volume;
private double mileage;
Engine() {
}
public Engine(double volume, double mileage) {
this.volume = volume;
this.mileage = mileage;
}
@Override
public String toString() {
return String.format("volume - %.1f; mileage - %.1f", volume, mileage);
}
}
class SportEngine extends Engine {
SportEngine() {
}
public SportEngine(double volume, double mileage) {
super(volume, mileage);
}
}
class SUVEngine extends Engine {
SUVEngine() {
}
public SUVEngine(double volume, double mileage) {
super(volume, mileage);
}
}
class Car implements Builder {
private int seats;
private Engine engine;
private String tripComputer;
private String gps;
public void setSeats(int seats) {
this.seats = seats;
}
public void setEngine(Engine engine) {
this.engine = engine;
}
public void setTripComputer(String tripComputer) {
this.tripComputer = tripComputer;
}
public void setGPS(String gps) {
this.gps = gps;
}
@Override
public String toString() {
return String.format("Count of seats: %s\nEngine: %s\nTrip Computer: %s\nGPS Navigator: %s\n", seats, engine,
tripComputer, gps);
}
}
interface CarBuilder {
void reset();
void buildSeats();
void buildEngine();
void buildTripComputer();
void buildGPS();
Car getResult();
}
class SUVCarBuilder implements CarBuilder {
private Car car;
@Override
public void reset() {
System.out.println("Type of car:\nSUV_CAR\n");
this.car = new Car();
}
@Override
public void buildSeats() {
car.setSeats(4);
}
@Override
public void buildEngine() {
car.setEngine(new SUVEngine(5.0, 40.0));
}
@Override
public void buildTripComputer() {
car.setTripComputer("Not Functional");
}
@Override
public void buildGPS() {
car.setGPS("Not Functional");
}
@Override
public Car getResult() {
return car;
}
}
class SportsCarBuilder implements CarBuilder {
private Car car;
@Override
public void reset() {
System.out.println("Type of car:\nSPORTS_CAR\n");
this.car = new Car();
}
@Override
public void buildSeats() {
car.setSeats(2);
}
@Override
public void buildEngine() {
car.setEngine(new SportEngine(3.0, 0.0));
}
@Override
public void buildTripComputer() {
car.setTripComputer("Functional");
}
@Override
public void buildGPS() {
car.setGPS("Functional");
}
@Override
public Car getResult() {
return car;
}
}
class Director {
private CarBuilder carBuilder;
Director(CarBuilder carBuilder) {
this.carBuilder = carBuilder;
}
public void makeSUVCar(CarBuilder carBuilder) {
carBuilder.reset();
carBuilder.buildSeats();
carBuilder.buildEngine();
carBuilder.buildTripComputer();
carBuilder.buildGPS();
}
public void makeSportsCar(CarBuilder carBuilder1) {
carBuilder1.reset();
carBuilder1.buildSeats();
carBuilder1.buildEngine();
carBuilder1.buildTripComputer();
carBuilder1.buildGPS();
}
public Car getResult() {
return this.carBuilder.getResult();
}
}
public class BuilderTask {
public static void main(String[] args) {
CarBuilder builder1 = new SUVCarBuilder();
Director director1 = new Director(builder1);
director1.makeSUVCar(builder1);
Car car1 = builder1.getResult();
System.out.println("Car Built:\n" + car1);
CarBuilder builder2 = new SportsCarBuilder();
Director director2 = new Director(builder2);
director2.makeSportsCar(builder2);
Car car2 = builder2.getResult();
System.out.println("Car Built:\n" + car2);
}
} |
Beta Was this translation helpful? Give feedback.
-
package designPatterns;
import java.util.Scanner;
interface CarBuildPlan{
void reset();
void setSeats(int number);
void setEngine(Engine engine);
void setTripComputer();
void setGPS();
}
class Engine{
double volume;
double mileage;
String transmission;
public Engine(double volume, double mileage, String transmission) {
this.volume = volume;
this.mileage = mileage;
this.transmission = transmission;
}
@Override
public String toString() {
return " volume - " + volume + " mileage - " + mileage + "\nTransmission: "+ transmission;
}
}
class Car implements CarBuildPlan{
private int noOfSeats;
private Engine engine;
private String tripComputer;
private String carGPS;
private String carName;
@Override
public void reset() {
this.noOfSeats = 0;
this.engine = null;
this.tripComputer = null;
this.carGPS = null;
}
public void setCarName(String carName) {
this.carName = carName;
}
@Override
public void setSeats(int noOfSeats) {
this.noOfSeats = noOfSeats;
}
@Override
public void setEngine(Engine engine) {
this.engine = engine;
}
@Override
public void setTripComputer() {
this.tripComputer = "Functional";
}
@Override
public void setGPS() {
this.carGPS = "Functional";
}
public String getCarName() {
return carName;
}
@Override
public String toString() {
return "\nType of car:" + carName + "\nCount of seats: " + noOfSeats + "\nEngine: " + engine + "\nTripCounter: "
+ tripComputer + "\nGPS Navigator: " + carGPS + "\n";
}
}
class Manual implements CarBuildPlan{
private int noOfSeats;
private Engine engine;
private String tripComputer;
private String carGPS;
private String carName;
@Override
public void reset() {
this.noOfSeats = 0;
this.engine = null;
this.tripComputer = null;
this.carGPS = null;
}
@Override
public void setSeats(int noOfSeats) {
this.noOfSeats = noOfSeats;
}
@Override
public void setEngine(Engine engine) {
this.engine = engine;
}
@Override
public void setTripComputer() {
this.tripComputer = "Functional";
}
@Override
public void setGPS() {
this.carGPS = "Functional";
}
public String getCarName() {
return carName;
}
public void setCarName(String carName) {
this.carName = carName;
}
@Override
public String toString() {
return "\nType of car:" + carName + "\nCount of seats: " + noOfSeats + "\nEngine: " + engine + "\nTripCounter: "
+ tripComputer + "\nGPS Navigator: " + carGPS + "\n";
}
}
interface CarBuilder{
void reset();
void buildSeats();
void buildEngine();
void builTripComputer();
void buildGPS();
Car getResult();
}
interface CarManualBuilder{
void reset();
void buildSeats();
void buildEngine();
void builTripComputer();
void buildGPS();
Manual getResult();
}
class SUVcarBuilder implements CarBuilder{
private Car car;
private Manual manual;
public Manual getManual() {
return manual;
}
public SUVcarBuilder() {
this.car = new Car();
this.manual = new Manual();
this.car.setCarName("SUV");
this.manual.setCarName("SUV");
}
@Override
public void reset() {
this.car = new Car();
this.car.setCarName("SUV");
this.manual.setCarName("SUV");
}
@Override
public void buildSeats(){
car.setSeats(4);
manual.setSeats(4);
}
@Override
public void buildEngine() {
Engine eg = new Engine(1.0,24.0,"AUTOMATIC");
car.setEngine(eg);
manual.setEngine(eg);
}
@Override
public void builTripComputer() {
car.setTripComputer();
manual.setTripComputer();
}
@Override
public void buildGPS() {
car.setGPS();
manual.setGPS();
}
@Override
public Car getResult() {
return car;
}
}
class SportsCarBuilder implements CarBuilder{
private Car car;
private Manual manual;
public Manual getManual() {
return manual;
}
public void setManual(Manual manual) {
this.manual = manual;
}
public SportsCarBuilder() {
this.car = new Car();
this.car.setCarName("SPORTS_CAR");
this.manual.setCarName("SPORTS_CAR");
}
@Override
public void reset() {
this.car = new Car();
this.car.setCarName("SPORTS_CAR");
this.manual.setCarName("SPORTS_CAR");
}
@Override
public void buildSeats(){
car.setSeats(2);
manual.setSeats(2);
}
@Override
public void buildEngine() {
Engine eg = new Engine(3.0,0.0,"SEMI_AUTOMATIC");
car.setEngine(eg);
manual.setEngine(eg);
}
@Override
public void builTripComputer() {
car.setTripComputer();
manual.setTripComputer();
}
@Override
public void buildGPS() {
car.setGPS();
manual.setGPS();
}
@Override
public Car getResult() {
return car;
}
}
class CarMechanic{
private CarBuilder car;
public CarMechanic(CarBuilder car) {
this.car = car;
}
public void makeCar() {
this.car.reset();
this.car.buildSeats();
this.car.buildEngine();
this.car.builTripComputer();
this.car.buildGPS();
}
public Car getCar() {
return this.car.getResult();
}
}
class CarBuilderFactory {
public CarBuilder getBuilderInstance(String b) {
if (b.equals("SUV")) {
return new SUVcarBuilder();
} else if (b.equals("SPORTS_CAR")) {
return new SportsCarBuilder();
} else {
throw new IllegalArgumentException("Invalid input " + b);
}
}
}
public class BuilderDemoCarBuilder {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Car built:");
String carName = sc.nextLine();
sc.close();
CarBuilderFactory carBuilderFactory = new CarBuilderFactory();
CarBuilder carBuilder = carBuilderFactory.getBuilderInstance(carName);
CarMechanic carMechanic = new CarMechanic(carBuilder);
carMechanic.makeCar();
Car customer1 = carMechanic.getCar();
System.out.println(customer1);
}
} |
Beta Was this translation helpful? Give feedback.
-
interface CarBuilder {
void reset();
void buildSeats();
void buildEngine();
void buildTripComputer();
void buildGPS();
Car getCar();
}
class Engine {
Double volume;
Double mileage;
String type;
public Engine(Double volume, Double mileage, String type) {
this.volume = volume;
this.mileage = mileage;
this.type = type;
}
@Override
public String toString() {
return "Engine [mileage=" + mileage + ", type=" + type + ", volume=" + volume + "]";
}
}
class Car {
private int seats;
private Engine engine;
private String gps;
private String trip;
public int getSeats() {
return seats;
}
public void setSeats(int seats) {
this.seats = seats;
}
public Engine getEngine() {
return engine;
}
public void setEngine(Engine engine) {
this.engine = engine;
}
public String getGps() {
return gps;
}
public void setGps(String gps) {
this.gps = gps;
}
public String getTrip() {
return trip;
}
public void setTrip(String trip) {
this.trip = trip;
}
@Override
public String toString() {
return "Car [engine=" + engine + ", gps=" + gps + ", seats=" + seats + ", trip=" + trip + "]";
}
}
class SUV implements CarBuilder {
private Car car;
public SUV() {
this.reset();
}
@Override
public void reset() {
this.car = new Car();
}
@Override
public void buildSeats() {
car.setSeats(5);
}
@Override
public void buildEngine() {
car.setEngine(new Engine(1.5, 17.0, "Inline petrol turbo charged"));
}
@Override
public void buildTripComputer() {
car.setTrip("Trip set to 0");
}
@Override
public void buildGPS() {
car.setGps("GPS set to Google Maps");
}
@Override
public Car getCar() {
return this.car;
}
}
class SportsCar implements CarBuilder {
private Car car;
public SportsCar() {
this.reset();
}
@Override
public void reset() {
this.car = new Car();
}
@Override
public void buildSeats() {
car.setSeats(2);
}
@Override
public void buildEngine() {
car.setEngine(new Engine(4.5, 5.5, "v8"));
}
@Override
public void buildTripComputer() {
car.setTrip("Trip set to 0");
}
@Override
public void buildGPS() {
car.setGps("GPS set to Apple Maps");
}
@Override
public Car getCar() {
return car;
}
}
class ServiceDealer {
private CarBuilder carBuilder;
ServiceDealer(CarBuilder carBuilder) {
this.carBuilder = carBuilder;
}
public void makeSUVCar() {
carBuilder.reset();
carBuilder.buildSeats();
carBuilder.buildEngine();
carBuilder.buildTripComputer();
carBuilder.buildGPS();
}
public void makeSportsCar() {
carBuilder.reset();
carBuilder.buildSeats();
carBuilder.buildEngine();
carBuilder.buildTripComputer();
carBuilder.buildGPS();
}
public Car getResult() {
return this.carBuilder.getCar();
}
}
public class ClientCar {
public static void main(String[] args) {
CarBuilder sportsCarBuilder = new SportsCar();
ServiceDealer serviceDealer = new ServiceDealer(sportsCarBuilder);
serviceDealer.makeSportsCar();
Car car = serviceDealer.getResult();
System.out.println("Car is built::\n" + car);
}
} |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
package design_patterns.carbuilder;
class Engine {
double volume;
double mileage;
public Engine(double volume, double mileage) {
this.volume = volume;
this.mileage = mileage;
}
@Override
public String toString() {
return "Engine: mileage=" + mileage + ", volume=" + volume;
}
}
class SportEngine extends Engine {
public SportEngine(double volume, double mileage) {
super(volume, mileage);
}
}
class Car {
private int seats;
private Engine engine;
private String GPS;
private String tripComputer;
public int getSeats() {
return seats;
}
public void setSeats(int seats) {
this.seats = seats;
}
public Engine getEngine() {
return engine;
}
public void setEngine(Engine engine) {
this.engine = engine;
}
public String getGPS() {
return GPS;
}
public void setGPS() {
this.GPS = "Functional";
}
public void setGPS(String GPS) {
this.GPS = GPS;
}
public String getTripComputer() {
return tripComputer;
}
public void setTripComputer() {
this.tripComputer = "Functional";
}
public void setTripComputer(String tripComputer) {
this.tripComputer = tripComputer;
}
@Override
public String toString() {
return "Car [GPS=" + GPS + ", engine=" + engine + ", seats=" + seats + ", tripComputer=" + tripComputer + "]";
}
}
interface Builder {
void reset();
void setSeats(int number);
void setEngine(Engine engine);
void setTripComputer();
void setGPS();
}
class CarBuilder implements Builder {
private Car car;
CarBuilder() {
this.car = new Car();
}
public void reset() {
car.setSeats(0);
car.setEngine(null);
car.setTripComputer(null);
car.setGPS(null);
}
public void setSeats(int number) {
car.setSeats(number);
}
public void setEngine(Engine engine) {
car.setEngine(engine);
}
public void setTripComputer() {
car.setTripComputer();
}
public void setGPS() {
car.setGPS();
}
public Car getResult() {
return car;
}
}
class Director {
private Builder builder;
public Director(Builder builder) {
this.builder = builder;
}
public void makeSUV() {
builder.reset();
builder.setSeats(4);
builder.setEngine(new Engine(2, 1.2));
builder.setTripComputer();
builder.setGPS();
}
public void makeSportsCar() {
builder.reset();
builder.setSeats(2);
builder.setEngine(new SportEngine(3, 1));
builder.setTripComputer();
builder.setGPS();
}
}
public class CarBuilderDriver {
public static void main(String[] args) {
CarBuilder builder = new CarBuilder();
Director engineer = new Director(builder);
engineer.makeSportsCar();
System.out.println("Car built");
Car car1 = builder.getResult();
System.out.println(car1);
System.out.println();
engineer.makeSUV();
System.out.println("Car built");
Car car2 = builder.getResult();
System.out.println(car2);
}
} |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
class Engine {
private double volume;
private double mileage;
public Engine(double volume, double mileage) {
this.volume = volume;
this.mileage = mileage;
}
@Override
public String toString() {
return "[mileage=" + mileage + ", volume=" + volume + "]";
}
}
class Car {
private int seats;
private Engine engine;
private String tripComputer;
private String gps;
public void setSeats(int seats) {
this.seats = seats;
}
public void setEngine(Engine engine) {
this.engine = engine;
}
public void setTripComputer(String tripComputer) {
this.tripComputer = tripComputer;
}
public void setGps(String gps) {
this.gps = gps;
}
@Override
public String toString() {
return "Engine:" + engine + "\n" + "GPS :" + gps + "\n" + "Seats:" + seats + "\n"
+ "Trip Computer:" + tripComputer;
}
}
interface Builder {
void reset();
void setSeats(int number);
void setEngine(Engine engine);
void setTripComputer();
void setGps();
}
class CarBuilder implements Builder {
private Car car;
@Override
public void reset() {
this.car = new Car();
}
@Override
public void setSeats(int number) {
this.car.setSeats(number);
}
@Override
public void setEngine(Engine engine) {
this.car.setEngine(engine);
}
@Override
public void setTripComputer() {
this.car.setTripComputer("Functional");
}
@Override
public void setGps() {
this.car.setGps("Functional");
}
public Car getResult() {
return this.car;
}
}
class Director {
void makeSUV(Builder builder) {
builder.reset();
builder.setSeats(5);
builder.setEngine(new Engine(4.5,3.0));
builder.setTripComputer();
builder.setGps();
System.out.println("this is suv car");
}
void makeSportsCar(Builder builder) {
builder.reset();
builder.setSeats(8);
builder.setEngine(new Engine(5.6,3.4));
builder.setTripComputer();
builder.setGps();
System.out.println("this is sports car");
}
}
public class Buildpattern {
public static void main(String[] args) {
CarBuilder suvbuilder = new CarBuilder();
Director director = new Director();
director.makeSUV(suvbuilder);
Car suvcar =suvbuilder.getResult();
System.out.println(suvcar);
CarBuilder carbuilder = new CarBuilder();
director.makeSportsCar(carbuilder);
Car sportsCar = carbuilder.getResult();
System.out.println(sportsCar);
}
} |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
package designPatterns;
class Engine {
String type;
public Engine(String type) {
this.type = type;
}
@Override
public String toString() {
return "Engine type is" + this.type;
}
}
interface CarPlan {
void setSeats(int seats);
void setEngine(Engine engine);
void setTripComputer(String tripComputer);
void setGPS(String gps);
}
class Car implements CarPlan {
private int seats;
private Engine engine;
private String tripComputer;
private String gps;
@Override
public void setEngine(Engine engine) {
this.engine = engine;
}
@Override
public void setSeats(int seats) {
this.seats = seats;
}
@Override
public void setGPS(String gps) {
this.gps = gps;
}
@Override
public void setTripComputer(String tripComputer) {
this.tripComputer = tripComputer;
}
@Override
public String toString() {
return "Car [engine=" + engine + ", gps=" + gps + ", seats=" + seats + ", tripComputer=" + tripComputer + "]";
}
}
interface CarBuilder {
void reset();
void buildSeats();
void buildEngine();
void buildTripComputer();
void buildGPS();
Car getCar();
}
class SportsCarBuilder implements CarBuilder {
private Car car;
SportsCarBuilder() {
this.car = new Car();
}
@Override
public void buildEngine() {
Engine engine = new Engine("V8");
car.setEngine(engine);
}
@Override
public void buildGPS() {
car.setGPS("GPS Active");
}
@Override
public void buildSeats() {
car.setSeats(5);
}
@Override
public void buildTripComputer() {
car.setTripComputer("Trip Computer active");
}
@Override
public void reset() {
this.car = new Car();
}
@Override
public Car getCar() {
return this.car;
}
}
class SUVCarBuilder implements CarBuilder {
private Car car;
SUVCarBuilder() {
this.car = new Car();
}
@Override
public void buildEngine() {
Engine engine = new Engine("V6");
car.setEngine(engine);
}
@Override
public void buildGPS() {
car.setGPS("GPS Active");
}
@Override
public void buildSeats() {
car.setSeats(7);
}
@Override
public void buildTripComputer() {
car.setTripComputer("Trip Computer active");
}
@Override
public void reset() {
this.car = new Car();
}
@Override
public Car getCar() {
return this.car;
}
}
class Director {
private CarBuilder carBuilder;
public Director(CarBuilder carBuilder) {
this.carBuilder = carBuilder;
}
public void buildCar() {
this.carBuilder.buildEngine();
this.carBuilder.buildGPS();
this.carBuilder.buildSeats();
this.carBuilder.buildTripComputer();
}
public Car getCar() {
return this.carBuilder.getCar();
}
}
public class BuilderPatternEg {
public static void main(String[] args) {
CarBuilder sportsCarBuilder = new SportsCarBuilder();
Director director = new Director(sportsCarBuilder);
director.buildCar();
Car car = director.getCar();
System.out.println(car);
}
} |
Beta Was this translation helpful? Give feedback.
-
VisweshwaranMBuilder.javainterface Builder {
void reset();
Builder setSeats(Integer seat);
Builder setEngine(String engine);
Builder setTripComputer(String trip);
Builder gPS();
} Director.javaclass Director {
Builder makeSUV(Builder builder) {
builder.reset();
builder.setSeats(8);
builder.setEngine("SUV Engine");
builder.setTripComputer("Blue Trip");
builder.gPS();
return builder;
}
Builder makeSportsCar(Builder builder) {
builder.reset();
builder.setSeats(2);
builder.setEngine("Sport-JET Engine");
builder.setTripComputer("Navy Blue Trip");
builder.gPS();
return builder;
}
} CarBuilder.javaclass CarBuilder implements Builder {
private Car car;
@Override
public void reset() {
this.car = new Car();
}
@Override
public Builder setSeats(Integer seat) {
this.car.setSeats(seat);
return this;
}
@Override
public Builder setEngine(String engine) {
this.car.setEngine(engine + "(Make in India)");
return this;
}
@Override
public Builder setTripComputer(String trip) {
this.car.setTripComputer(trip + " (Make in India)");
return this;
}
@Override
public Builder gPS() {
this.car.setGps("Skakthi GPS (Make in India)");
return this;
}
public Car getResult() {
return new Car(this.car);
}
} Car.javaclass Car {
private int seats;
private String engine;
private String tripComputer;
private String gps;
public Car(Car car) {
super();
this.seats = car.seats;
this.engine = car.engine;
this.tripComputer = car.tripComputer;
this.gps = car.gps;
}
public Car() {
}
public int getSeats() {
return seats;
}
public void setSeats(int seats) {
this.seats = seats;
}
public String getEngine() {
return engine;
}
public void setEngine(String engine) {
this.engine = engine;
}
public String getTripComputer() {
return tripComputer;
}
public void setTripComputer(String tripComputer) {
this.tripComputer = tripComputer;
}
public String getGps() {
return gps;
}
public void setGps(String gps) {
this.gps = gps;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("Car [seats=").append(seats).append(", engine=").append(engine).append(", tripComputer=")
.append(tripComputer).append(", gps=").append(gps).append("]");
return builder.toString();
}
} Manual.javaclass Manual {
private int seats;
private String engine;
private String tripComputer;
private String gps;
public Manual(Manual manual) {
super();
this.seats = manual.seats;
this.engine = manual.engine;
this.tripComputer = manual.tripComputer;
this.gps = manual.gps;
}
public Manual() {
}
public int getSeats() {
return seats;
}
public void setSeats(int seats) {
this.seats = seats;
}
public String getEngine() {
return engine;
}
public void setEngine(String engine) {
this.engine = engine;
}
public String getTripComputer() {
return tripComputer;
}
public void setTripComputer(String tripComputer) {
this.tripComputer = tripComputer;
}
public String getGps() {
return gps;
}
public void setGps(String gps) {
this.gps = gps;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("Manual [seats=").append(seats).append(", engine=").append(engine).append(", tripComputer=")
.append(tripComputer).append(", gps=").append(gps).append("]");
return builder.toString();
}
} CarManualBuilder.javaclass CarManualBuilder implements Builder {
private Manual manual;
@Override
public void reset() {
this.manual = new Manual();
}
@Override
public Builder setSeats(Integer seat) {
this.manual.setSeats(seat);
return this;
}
@Override
public Builder setEngine(String engine) {
this.manual.setEngine(engine + "(Make in INDIA)");
return this;
}
@Override
public Builder setTripComputer(String trip) {
this.manual.setTripComputer(trip + " (Make in INDIA)");
return this;
}
@Override
public Builder gPS() {
this.manual.setGps("Skakthi GPS (Make in INDIA)");
return this;
}
public Manual getResult() {
return new Manual(this.manual);
}
} Driver Classpublic class BuilderWithDirectorExample {
public static void main(String[] args) {
try {
System.out.println("BuilderWithDirectorExample started");
Director director = new Director();
CarBuilder carBuilder = new CarBuilder();
director.makeSUV(carBuilder);
Car car = carBuilder.getResult();
System.out.println(car);
CarManualBuilder carManualBuilder = new CarManualBuilder();
director.makeSportsCar(carManualBuilder);
System.out.println(carManualBuilder.getResult());
} catch (Exception e) {
e.printStackTrace();
}
}
} |
Beta Was this translation helpful? Give feedback.
-
@akash-coded |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
@akash-coded |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Implementing Builder Design Pattern
UML Diagram
Task
Write a Java program to implement the structure shown in the UML diagram.
The Builder pattern allows the step-by-step construction of different car models.
Use the Builders to produce products of different kinds (car manual) using the same building steps.
The Director controls the order of the construction. It knows which building steps to call to produce this or that car model. It works with builders only via their common interface. This allows passing different types of builders to the director.
The end result is retrieved from the builder object because the director can’t know the type of resulting product. Only the Builder object knows what does it build exactly.
Sample Output
Background
A car is a complex object that can be constructed in a hundred different ways. Instead of bloating the Car class with a huge constructor, we extracted the car assembly code into a separate car builder class. This class has a set of methods for configuring various parts of a car.
If the client code needs to assemble a special, fine-tuned model of a car, it can work with the builder directly. On the other hand, the client can delegate the assembly to the director class, which knows how to use a builder to construct several of the most popular models of cars.
You might be shocked, but every car needs a manual (seriously, who reads them?). The manual describes every feature of the car, so the details in the manuals vary across the different models. That’s why it makes sense to reuse an existing construction process for both real cars and their respective manuals. Of course, building a manual isn’t the same as building a car, and that’s why we must provide another builder class that specializes in composing manuals. This class implements the same building methods as its car-building sibling, but instead of crafting car parts, it describes them. By passing these builders to the same director object, we can construct either a car or a manual.
The final part is fetching the resulting object. A metal car and a paper manual, although related, are still very different things. We can’t place a method for fetching results in the director without coupling the director to concrete product classes. Hence, we obtain the result of the construction from the builder which performed the job.
Beta Was this translation helpful? Give feedback.
All reactions