Quick actions

cmd+k|ctrl+k

Navigation

Languages

abstract Factory

Snippet info

Language

Java

Visibility

public

Author

1ndroidbella

Created

2019-08-06T11:34:48Z

Updated

2019-08-06T20:09:28Z

//@clashbyte
class Main {
    public static void main(String[] args) {
        BlackMan black = new BlackMan();
        black.makeHead().drawHead();  //Black Head
        black.makeBody().drawBody();  //Black Body
        black.makeLegs().drawLegs();  //Black Legs
    }
}

/*
----------------------
Factories
----------------------
*/


abstract class HumanFactory {
    abstract Head makeHead();
    abstract Body makeBody();
    abstract Legs makeLegs();
}

//Black Man

class BlackMan extends HumanFactory{
    @Override
    public Head makeHead() {
        return new BlackHead();
    }

    @Override
    public Body makeBody() {
        return new BlackBody();
    }

    @Override
    public Legs makeLegs() {
        return new BlackLegs();
    }
}

// Brown Man


 class BrownMan extends HumanFactory {
    @Override
    public Head makeHead() {
        return new BrownHead();
    }

    @Override
    public Body makeBody() {
        return new BrownBody();
    }

    @Override
    public Legs makeLegs() {
        return new BrownLegs();
    }
}

// White Man

 class WhiteMan extends HumanFactory{
    @Override
    public Head makeHead() {
        return new WhiteHead();
    }

    @Override
    public Body makeBody() {
        return new WhiteBody();
    }

    @Override
    public Legs makeLegs() {
        return new WhiteLegs();
    }
}

/*
----------------------
Interfaces
----------------------
*/

 interface Head {
    void drawHead();
}
 interface Body {
    void drawBody();
}
 interface Legs {
    void drawLegs();
}

/*
----------------------
Heads
----------------------
*/

class BlackHead implements Head {
    @Override
    public void drawHead() {
        System.out.println("Black Head");
    }
}

 class BrownHead implements Head {
    @Override
    public void drawHead() {
        System.out.println("Brown Head");
    }
}

 class WhiteHead implements Head {
    @Override
    public void drawHead() {
        System.out.println("White Head");
    }
}

/*
----------------------
Bodies
----------------------
*/

 class BlackBody implements Body {
    @Override
    public void drawBody() {
        System.out.println("Black Body");
    }
}

 class BrownBody implements Body {
    @Override
    public void drawBody() {
        System.out.println("Brown Body");
    }
}

class WhiteBody implements Body {
    @Override
    public void drawBody() {
        System.out.println("White Body");
    }
}

/*
----------------------
Legs
----------------------
*/

 class BlackLegs implements Legs {
    @Override
    public void drawLegs() {
        System.out.println("Black Legs");
    }
}

class BrownLegs implements Legs {
    @Override
    public void drawLegs() {
        System.out.println("Brown Legs");
    }
}

 class WhiteLegs implements Legs {
    @Override
    public void drawLegs() {
        System.out.println("White Legs");
    }
}

INFO