1、建造者模式又叫生成器模式,是一种对象构建模式,它可以将复杂对象的建造过程抽象出来,使这个抽象过程的不同实现方法可以构建出不同的表现(属性)的对象。
2、建造者模式是一步一步创建一个复杂对象,它允许用户只通过指定复杂对象的类型和内容就可以构建他们,用户不需要知道内部的具体构建细节。
构建中的四个角色:
- Product(产品角色):一个具体的产品对象。
- Buider(抽象建造者):创建一个Product对象的各个部件指定的接口/抽象类。
- ConcreteBuilder(具体建造者):实现接口,构建和装配各个部件。
4.Director(指挥着):构建一个使用Builder接口的对象,它主要用于创建一个复杂对象,他的主要作用,一是隔离客户与对象的生产过程,二是复杂控制产品对象的生产过程。

下面使用生产面包的方式来说明:
/** * 面包的基本信息 * @author Administrator * */ public class Bread { private String shape;//形状 private String flavor;//口味 public String getShape() { return shape; } public void setShape(String shape) { this.shape = shape; } public String getFlavor() { return flavor; } public void setFlavor(String flavor) { this.flavor = flavor; } } /** * 生产面包的基本方法 * @author Administrator * */ public interface IBread { /** * 和面 */ void harmonySurface(); /** * 发酵 */ void fermentation(); /** * 烤面包 */ void roast(); } /** * 生产面包的基本方法 * @author Administrator * */ public interface IBread { /** * 和面 */ void harmonySurface(); /** * 发酵 */ void fermentation(); /** * 烤面包 */ void roast(); } /** * 面包制作的指挥着,根据制作流程来制作面包 * @author Administrator * */ public class BreadDirect { public IBread iBread; public BreadDirect(IBread iBread) { this.iBread = iBread; } public Bread getBread() { Bread bread = new Bread(); iBread.harmonySurface(); iBread.fermentation(); iBread.roast(); return bread; } } /** * 通过建造者模式来完成做面包的流程 * @author Administrator * */ public class Client { public static void main(String[] args) { BreadDirect bread = new BreadDirect(new CheeseBread()); bread.getBread(); } } |
建造者注意事项:
- 客户端(使用程序)不必知道产品的内部组成细节,将产品本身与产品的创建过车解耦,使得相同的创建过车可以创建不同的产品对象。
- 每一个具体的建造者都相对独立,而与其他具体的建造者无关,因此可以很方便的替换具体建造者或者增加新的具体建造者,用户使用不用的具体建造者可以得到不同的产品。