建造者模式

    xiaoxiao2025-02-03  50

    Builder 对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性地对象。

    应用场景: 对象的创建:Builder模式是为对象的创建而设计的模式 创建的是一个复合对象:被创建的对象为一个具有复合属性的复合对象 关注对象创建的各部分的创建过程:不同的工厂(这里指builder生成器)对产品属性有不同的创建方法

    Builder: public interface HouseBuilder { //修地板 public void makeFloor(); //修墙 public void makeWall(); //修屋顶 public void makeHouseTop(); public House getHouse(); } //Builder的实现类 public class PingFangBuilder implements HouseBuilder{ House house = new House(); @Override public void makeFloor() { house.setFloor("平方-->地板"); } @Override public void makeWall() { house.setWall("平方-->墙"); } @Override public void makeHouseTop() { house.setHouseTop("平方-->屋顶"); } @Override public House getHouse() { return house; } } public class DepartMentBuilder implements HouseBuilder { House house = new House(); @Override public void makeFloor() { house.setFloor("公寓-->地板"); } @Override public void makeWall() { house.setWall("公寓-->墙"); } @Override public void makeHouseTop() { house.setHouseTop("公寓-->屋顶"); } @Override public House getHouse() { return house; } } Direct: public class HouseDirector { public void makeHouse(HouseBuilder builder){ builder.makeWall(); builder.makeFloor(); builder.makeHouseTop(); } } Product: public class House { //地板 private String floor; //墙 private String wall; //屋顶 private String houseTop; public String getFloor() { return floor; } public void setFloor(String floor) { this.floor = floor; } public String getWall() { return wall; } public void setWall(String wall) { this.wall = wall; } public String getHouseTop() { return houseTop; } public void setHouseTop(String houseTop) { this.houseTop = houseTop; } }

    通过内部类给私有的外部类建造实例

    class Singeleton { private Singeleton() { } public static class Build{ public Singeleton build(){ return new Singeleton(); } } } //测试 Singeleton build = new Singeleton.Build().build();

    构建器 适用于参数过多的情况。

    最新回复(0)