首页 > 代码库 > 设计模式之建造者模式
设计模式之建造者模式
建造者模式也叫生成器模式,是一种对象创建型模式,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承或重载的方式,动态的创建具有复合属性的对象。
应用场景:
-对象的创建:Builder模式是为对象的创建而设计的模式
-创建的是一个复合对象:被创建的对象为一个具有复合属性的复合对象
-关注对象创建的各部分的创建过程:不同的工厂(这里指builder生成器)对产品属性有不同的创建方法
复合属性的对象(即要创建的对象):
public class House { private String floor; private String wall; private String proof; 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 getProof() { return proof; } public void setProof(String proof) { this.proof = proof; } }
具体创建者接口或抽象类:
public interface HouseBuilder { public void makeFloor(); public void makeWall(); public void makeProof(); public House getHouse(); }
具体创建者实现类1:
public class ApartmentBuilder implements HouseBuilder { private House house = new House(); @Override public House getHouse() { return house; } @Override public void makeFloor() { house.setFloor("Apartment --> Floor"); } @Override public void makeWall() { house.setWall("Apartment --> Wall"); } @Override public void makeProof() { house.setProof("Apartment --> Proof"); } }
public class VillaBuilder implements HouseBuilder { private House house = new House(); @Override public void makeFloor() { house.setFloor("Villa --> Floor"); } @Override public void makeWall() { house.setWall("Villa --> Wall"); } @Override public void makeProof() { house.setProof("Villa --> Proof"); } @Override public House getHouse() { return house; } }
设计者类:
public class HouseDirector { public void makeHouse(HouseBuilder builder) { builder.makeFloor(); builder.makeProof(); builder.makeWall(); } }
客户端调用类:
public class ClientApp { public static void main(String[] args) { // HouseBuilder builder = new ApartmentBuilder(); HouseBuilder builder = new VillaBuilder(); HouseDirector director = new HouseDirector(); director.makeHouse(builder); House house = builder.getHouse(); System.out.println(house.getFloor()); System.out.println(house.getProof()); System.out.println(house.getWall()); } }
设计模式之建造者模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。