构造者模式和策略模式比较类似,都是由一个调用方和被调用方组成,只是构造者模式一般用于更复杂的情况,虽然具体的工作由被调用方实现,但是调用方确定实现的先后顺序。
1、定义Builder接口
public interface Builder { void window(); void door(); void floor(); void ground(); void yard(); }
2、Builder接口的两个实现类
public class HouseBuilder implements Builder { @Override public void window() { System.out.println("house window"); } @Override public void door() { System.out.println("house door"); } @Override public void floor() { System.out.println("house floor"); } @Override public void ground() { System.out.println("house ground"); } @Override public void yard() { System.out.println("house yard"); } }
public class VillaBuilder implements Builder{ @Override public void window() { System.out.println("villa window"); } @Override public void door() { System.out.println("villa door"); } @Override public void floor() { System.out.println("villa floor"); } @Override public void ground() { System.out.println("villa ground"); } @Override public void yard() { System.out.println("villa yard"); } }
3、主类
public class Main { private Builder builder; public Main(Builder builder) { this.builder = builder; } public void create() { builder.floor(); builder.ground(); builder.door(); builder.window(); builder.yard(); } }
4、测试
public class Test { public static void main(String[] args) { Main house = new Main(new HouseBuilder()); house.create(); Main villa = new Main(new VillaBuilder()); villa.create(); } }