Design patterns. Builder. Agent007 Builder

From AsIsWiki
(Difference between revisions)
Jump to: navigation, search
 
Line 21: Line 21:
 
         agentBuilder.setIntelligence(7).setCharisma(8).setArmour(3).setLifes(3);
 
         agentBuilder.setIntelligence(7).setCharisma(8).setArmour(3).setLifes(3);
  
         Agent007 pierceBrosnan = agentBuilder.build();
+
         Agent007 pierceBrosnan = agentBuilder.build();
  
 
         System.out.println(seanConnery.toString());
 
         System.out.println(seanConnery.toString());

Latest revision as of 10:42, 27 February 2016

Builder


[edit] 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 +
                '}';
    }
}



Builder

Personal tools
Namespaces

Variants
Actions
Navigation
Tools