定义:Builder模式是一步一步创建一个复杂的对象,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 是为了将构建复杂对象的过程和它的部件解耦.
通常为四个角色:
i) 抽象建造者(Builder)角色:给出一个抽象接口,以规范产品对象的各个组成成分的构造;
ii)具体建造者(ConcretBuilder)角色:它在应用程序的调用下创建产品的实例。完成任务为;
a) 实现抽象建造者Builder接口,给出一步步完成创建产品实例的操作;
b) 在创建完成后,提供产品的实例。
iii) 导演者(Director角色):调用具体建造者角色以创建产品对象;
iv)产品(Product)角色:建造中的复杂对象。一般情况下,一个系统不止一个产品类。
假如我们要组装一台电脑(Computer类),里面有三个配件(Keyboard类,MainFrameBox类,Monitor类)
/**
* Computer类 里面有com.jeedroid.part包里的三个属性
*/
package com.jeedroid.product;
import com.jeedroid.part.*;
public class Computer
{
private Keyboard keyboard;
private MainFrameBox mainFrameBox;
private Monitor monitor;
public Keyboard getKeyboard()
{
return keyboard;
}
public void setKeyboard(Keyboard keyboard)
{
this.keyboard = keyboard;
}
public MainFrameBox getMainFrameBox()
{
return mainFrameBox;
}
public void setMainFrameBox(MainFrameBox mainFrameBox)
{
this.mainFrameBox = mainFrameBox;
}
public Monitor getMonitor()
{
return monitor;
}
public void setMonitor(Monitor monitor)
{
this.monitor = monitor;
}
public Computer(Keyboard keyboard, MainFrameBox mainFrameBox, Monitor monitor)
{
super();
this.keyboard = keyboard;
this.mainFrameBox = mainFrameBox;
this.monitor = monitor;
}
}
/**
* 这个类调用CreatorComputer类来完成组装工作
*/
package com.jeedroid.designpattern;
import com.jeedroid.product.Computer;
public class Director
{
private Builder builder;
public Director(Builder builder)
{
this.builder=builder;
}
public void construct()
{
builder.buildKeyboard();
builder.buildMainFrameBox();
builder.buildMonitor();
}
}
/**
* 这个类负责具体的组装工作
*/
package com.jeedroid.designpattern;
import com.jeedroid.part.Keyboard;
import com.jeedroid.part.MainFrameBox;
import com.jeedroid.part.Monitor;
import com.jeedroid.product.Computer;
public class CreatorComputer implements Builder
{
private Keyboard keyboard;
private MainFrameBox mainFrameBox;
private Monitor monitor;
private Computer computer;
@Override
public Keyboard buildKeyboard()
{
keyboard=new Keyboard("keyboard");
return keyboard;
}
@Override
public MainFrameBox buildMainFrameBox()
{
mainFrameBox=new MainFrameBox("MainFrameBox");
return mainFrameBox;
}
@Override
public Monitor buildMonitor()
{
monitor=new Monitor("monitor");
return null;
}
@Override
public Computer getComputer()
{
computer=new Computer(keyboard,mainFrameBox,monitor);
return computer;
}
}
测试代码
分享到:
相关推荐
Builder模式 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 统设计中,有时候面临着一个“复杂系统”的创建工作,该对象通常由各个部分的子对象用一定的算法构成,或者说按一定的...
C#设计模式之建造者(Builder)模式示例源代码
NULL 博文链接:https://wy649898543.iteye.com/blog/1431751
设计模式C++学习之建造者模式(Builder)
建造者模式【Builder Pattern】(二)问题改进
demo中使用了设计模式中的建造者模式,代码非常精简,本地可正常运行,亲测有效!
建造者模式【Builder Pattern】(一)问题提出
将一个复杂对象的构造与它的表示分离,使同样的构建 过程可以创建不同的表示,这样的设计模式被称为建造者模式。
Java 设计模式-建造者模式(Builder)结合Android小知识讲解,简单明了
设计模式之---建造模式 1,建造模式属于对象的创建模式,是将一个产品的内部表象和产品的生产分割出来 2.使用原因:为了将构建复杂对象的过程和它的不见解耦; 3 使用情况:建造模式利用一个导演着对象和一个具体...
建造者模式是一种创建型设计模式,用于简化复杂对象的创建过程。以下是建造者模式的关键概念和步骤: 1. **分离复杂对象的构建和表示**:建造者模式将一个复杂对象的构建过程与其最终的表示形式分离开来。这样做的...
主要介绍了Ruby设计模式编程中使用Builder建造者模式的实例,建造者模式将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,需要的朋友可以参考下
主要为大家详细介绍了Java设计模式之Builder建造者模式的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
java设计模式【之】建造者模式【源码】【场景:车辆组装】 将复杂的对象构建,与对象的使用进行分离 用户只需要通过简单流程即可创建出对象 方法调用顺序,步骤的不同实现 优点:封装性号,创建和使用分离,扩展性...
各个设计模式的介绍,非常不错 Java与设计模式 设计模式之Factory -工厂模式设计模式之FACTORY METHOD -工厂模式設計模式之Builder -建造模式
主要介绍了Java设计模式之建造者模式(Builder模式)介绍,本文讲解了为何使用建造者模式、如何使用建造者模式、Builder模式的应用等内容,需要的朋友可以参考下
php /** * 建造者模式 * * 将一个复杂对象的构建与它的表示分离,使用同样的构建过程可以创建不同的表示 */ class Product { public $_type = null; public $_size = null; public $_color = null; public function ...
建造者模式【Builder Pattern】(三)问题引申
建造者模式【Builder Pattern】(一)问题改进