abstract Factory

Run Settings
LanguageJava
Language Version
Run Command
//@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"); } }
Editor Settings
Theme
Key bindings
Full width
Lines