屌丝有了钱只是用来花的,那得有些霸气一点的房子吧!
意图:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
适用性:
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; } }
package creatingtype.builder; /* * 工程队 */ 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(); } }负责人有了,如果你想建造别墅,确定别墅工程队
package creatingtype.builder; /* * 别墅工程队 */ 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; } }负责人有了,如果你想建造豪宅,确定豪宅工程队
package creatingtype.builder; /* * 豪宅工程队 */ 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) { //工程队 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()); } }
原文地址:http://blog.csdn.net/fullstack/article/details/25467185