建造者模式(Builder)git
public class SimpleEntity1 { public SimpleEntity1(){ System.out.println("create SimpleEntity1..."); } } public class SimpleEntity2 { public SimpleEntity2(){ System.out.println("create SimpleEntity2..."); } }
public class ComplexEntity { public void createComplexEntity(SimpleEntity1 simpleEntity1, SimpleEntity2 simpleEntity2){ System.out.println("createComplexEntity ... with simpleEntity1 AND simpleEntity2 "); } }
public static void main(String[] args) { SimpleEntity1 s1 = new SimpleEntity1(); SimpleEntity2 s2 = new SimpleEntity2(); ComplexEntity complexEntity = new ComplexEntity(); complexEntity.createComplexEntity(s1, s2); }
create SimpleEntityA1... create SimpleEntity2... createComplexEntity ... with simpleEntity1 AND simpleEntity2
將一個複雜的對象的構建與它的表示分離,使得一樣的構建過程能夠建立不一樣的表示.github
public class ComplexEntity { public ComplexEntity(){ System.out.println("create complexEntity ..."); } public void setSimpleEntityA(ISimpleEntityA a){ System.out.println("complexEntity set simpleEntityA ..."); } public void setSimpleEntityB(ISimpleEntityB b){ System.out.println("complexEntity set simpleEntityB ..."); } }
public interface ISimpleEntityA { } public interface ISimpleEntityB { } public class SimpleEntityA1 implements ISimpleEntityA { public SimpleEntityA1(){ System.out.println("create SimpleEntityA1 ..."); } } public class SimpleEntityB1 implements ISimpleEntityB { public SimpleEntityB1(){ System.out.println("create SimpleEntityB1 ..."); } }
public interface IBuilder { void createSimpleEntityA(); void createSimpleEntityB(); ComplexEntity createComplexEntity(); }
public class Builder1 implements IBuilder{ ComplexEntity complexEntity = new ComplexEntity(); @Override public void createSimpleEntityA() { complexEntity.setSimpleEntityA(new SimpleEntityA1()); } @Override public void createSimpleEntityB() { complexEntity.setSimpleEntityB(new SimpleEntityB1()); } @Override public ComplexEntity createComplexEntity() { return complexEntity; } }
public class Director { public ComplexEntity create1(){ IBuilder builder = new Builder1(); builder.createSimpleEntityA(); builder.createSimpleEntityB(); return builder.createComplexEntity(); } }
public static void main(String[] args) { Director director = new Director(); director.create1(); }
create complexEntity ... create SimpleEntityA1 ... complexEntity set simpleEntityA ... create SimpleEntityB1 ... complexEntity set simpleEntityB ...
https://github.com/Seasons20/DisignPattern.git
ENDide