import java.util.*;
import java.lang.*;
import java.io.*;
// The main method must be in a class named "Main".
class Main {
public static void main(String[] args) {
BankAccount account = BankAccount.Builder.builder()
.identification("Alice Johnson", "DNI123456")
.contact("alice@email.com")
.accountType("Savings")
.build();
System.out.println(account);
}
}
class BankAccount {
private final String fullName;
private final String documentId;
private final String contact;
private final String accountType;
private BankAccount(Builder builder) {
this.fullName = builder.fullName;
this.documentId = builder.documentId;
this.contact = builder.contact;
this.accountType = builder.accountType;
}
// --- Step Interfaces ---
public interface IdentificationStep {
ContactStep identification(String fullName, String documentId);
}
public interface ContactStep {
AccountTypeStep contact(String contact);
}
public interface AccountTypeStep {
FinalStep accountType(String type);
}
public interface FinalStep {
BankAccount build();
}
// --- Builder Implementation ---
public static class Builder implements IdentificationStep, ContactStep, AccountTypeStep, FinalStep {
private String fullName;
private String documentId;
private String contact;
private String accountType;
public static IdentificationStep builder() {
return new Builder();
}
@Override
public ContactStep identification(String fullName, String documentId) {
this.fullName = fullName;
this.documentId = documentId;
return this;
}
@Override
public AccountTypeStep contact(String contact) {
this.contact = contact;
return this;
}
@Override
public FinalStep accountType(String type) {
this.accountType = type;
return this;
}
@Override
public BankAccount build() {
return new BankAccount(this);
}
}
@Override
public String toString() {
return "BankAccount{" +
"fullName='" + fullName + '\'' +
", documentId='" + documentId + '\'' +
", contact='" + contact + '\'' +
", accountType='" + accountType + '\'' +
'}';
}
}
To embed this project on your website, copy the following code and paste it into your website's HTML: