Design patterns. Builder. Agent007 Builder
From AsIsWiki
Agent007 Builder
public class Main { public static void main(String[] args) { Agent007.Builder agentBuilder = new Agent007.Builder(188, 90); agentBuilder.setIntelligence(8).setCharisma(7).setArmour(5).setLifes(3); Agent007 seanConnery = agentBuilder.build(); agentBuilder.setIntelligence(7).setCharisma(8).setArmour(3).setLifes(3); Agent007 pierceBrosnan = agentBuilder.build(); System.out.println(seanConnery.toString()); System.out.println(pierceBrosnan.toString()); } } class Agent007 { private final int height; // рост private final int weight; // вес private final int intelligence; // интеллект private final int charisma; // харизма private final int armour; // броня private final int lifes; // кол-во жизней public static class Builder { // Обязательные параметры private final int height; private final int weight; // Дополнительные параметры private int intelligence = 1; private int charisma = 1; private int lifes = 1; private int armour = 1; public Builder(int height, int weight) { this.height = height; this.weight = weight; } public Builder setIntelligence(int val) { intelligence = val; return this; } public Builder setCharisma(int val) { charisma = val; return this; } public Builder setLifes(int val) { lifes = val; return this; } public Builder setArmour(int val) { armour = val; return this; } public Agent007 build() { return new Agent007(this); } } private Agent007(Builder builder) { height = builder.height; weight = builder.weight; intelligence = builder.intelligence; charisma = builder.charisma; armour = builder.armour; lifes = builder.lifes; } @Override public String toString() { return "Agent007{" + "height=" + height + ", weight=" + weight + ", intelligence=" + intelligence + ", charisma=" + charisma + ", armour=" + armour + ", lifes=" + lifes + '}'; } }