屌丝有了钱仅仅是用来花的,那得有些霸气一点的房子吧!
意图:将一个复杂对象的构建与它的表示分离。使得相同的构建过程能够创建不同的表示。
适用性:
1、房子有不同的几个部分。能独立的安装
2、希望能建造出多个不同表象的房子
大家先看个类图
1.Builder
为创建一个Product对象的各个部件指定抽象接口。
2.ConcreteBuilder
实现Builder的接口以构造和装配该产品的各个部件。
定义并明白它所创建的表示。
提供一个检索产品的接口。
3.Director
构造一个使用Builder接口的对象。
4.Product
表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程。
包括定义组成部件的类。包括将这些部件装配成终于产品的接口。
如今要建的是房子House。有个喜欢的家。
package creatingtype.builder;/* * 房子 */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; }}预定project队(不同的project队建不同的房子)
package creatingtype.builder;/* * project队 */public interface HouseBuilder { //建造地板 public void makeFloor(); //建造墙 public void makeWall(); //建造屋顶 public void makeHousetop(); public House getHouse();}找个负责人
package creatingtype.builder;public class HouseDirector { public void makeHouse(HouseBuilder builder) { //建造地板 builder.makeFloor(); //建造墙 builder.makeWall(); //建造屋顶 builder.makeHousetop(); }}负责人有了。假设你想建造别墅。确定别墅project队
package creatingtype.builder;/* * 别墅project队 */public class BieShuBuilder implements HouseBuilder { House house = new House(); public void makeFloor() { house.setFloor("别墅-->地板"); } public void makeHousetop() { house.setHousetop("别墅-->房顶"); } public void makeWall() { house.setWall("别墅-->墙"); } public House getHouse() { return house; }}负责人有了,假设你想建造豪宅,确定豪宅project队
package creatingtype.builder;/* * 豪宅project队 */public class HaoZhaiBuilder implements HouseBuilder { House house = new House(); public House getHouse() { return house; } public void makeFloor() { house.setFloor("豪宅-->地板"); } public void makeHousetop() { house.setHousetop("豪宅-->房顶"); } public void makeWall() { house.setWall("豪宅-->墙"); }}都好了。你能够開始修建自己想要的家了。
package creatingtype.builder;// 建造者模式public class MainClass { // Builder模式也叫建造者模式或者生成器模式, // 是由GoF提出的23种设计模式中的一种。Builder模式是一种对象创建型模式之中的一个,用来 // 隐藏复合对象的创建过程,它把复合对象的创建 // 过程加以抽象。通过子类继承和重载的方式,动 // 态地创建具有复合属性的对象。 public static void main(String[] args) { //project队 HouseBuilder builder = new HaoZhaiBuilder(); //设计者 HouseDirector director = new HouseDirector(); director.makeHouse(builder); House house = builder.getHouse(); System.out.println(house.getFloor()); System.out.println(house.getWall()); System.out.println(house.getHousetop()); }}就这么简单,豪宅好了,你也能够建别墅哦!