《雲頂之弈》11.23版白學麗桑卓運營教程
阿新 • • 發佈:2021-12-03
傳統建造者模式
Builder:定義建立的過程,一般是抽象類
ConcreteBuilder:真正的構建過程,重寫Builder中的方法,相當於填充骨架
Director:指揮類,內部封裝了構建的過程。作用是對外提供建立物件的介面,隱藏了建立物件的細節
程式碼:
//Product @Data class Person{ private String head; private String body; private String armL; private String armR; private String legL; private String legR; }
//builder //定義步驟,穩定過程 abstract class BuilderPersonStep { public abstract void buildHead(); public abstract void buildBody();public abstract void buildArmL(); public abstract void buildArmR(); public abstract void buildLegL(); public abstract void buildLegR(); public abstract Person getPerson(); }
//ConcreteBuilder //建立胖小人 class fatPerson extends BuilderPersonStep { private Person person = new Person(); @Overridepublic void buildHead() { person.setHead("胖小人的頭"); } @Override public void buildBody() { person.setBody("胖小人的身體"); } @Override public void buildArmL() { person.setArmL("胖小人的左胳膊"); } @Override public void buildArmR() { person.setArmR("胖小人的右胳膊"); } @Override public void buildLegL() { person.setLegL("胖小人的左腿"); } @Override public void buildLegR() { person.setLegR("胖小人的右腿"); } @Override public Person getPerson() { return person; } }
//Director class BuilderDirector { private BuilderPersonStep builderStep; public BuilderDirector(BuilderPersonStep builderStep) { this.builderStep = builderStep; } public Person createPerson() { builderStep.buildHead(); builderStep.buildBody(); builderStep.buildArmL(); builderStep.buildArmR(); builderStep.buildLegL(); builderStep.buildLegR(); Person person = builderStep.getPerson(); return person; } }