CarModel.java代码如下:
package com.designPattern.builder;
import java.util.ArrayList;
public abstract class CarModel {
private ArrayList<String> sequence = new ArrayList<String>();
protected abstract void start();
protected abstract void stop();
protected abstract void alarm();
protected abstract void engineBoom();
public final void run(){
for(int i=0;i<this.sequence.size();i++){
String actionName = this.sequence.get(i);
if(actionName.equals("start")){
this.start();
}else if(actionName.equals("stop")){
this.stop();
}else if(actionName.equals("alarm")){
this.alarm();
}else if(actionName.equals("engineBoom")){
this.engineBoom();
}
}
}
public final void setSequence(ArrayList<String> sequence){
this.sequence = sequence;
}
}
BenzModel.java代码如下:
package com.designPattern.builder;
public class BenzModel extends CarModel{
@Override
protected void start() {
System.out.println("奔驰启动!");
}
@Override
protected void stop() {
System.out.println("奔驰停车!");
}
@Override
protected void alarm() {
System.out.println("奔驰鸣笛!");
}
@Override
protected void engineBoom() {
System.out.println("奔驰发动机启动!");
}
}
BMWModel.java代码如下:
package com.designPattern.builder;
public class BMWModel extends CarModel{
@Override
protected void start() {
System.out.println("宝马启动!");
}
@Override
protected void stop() {
System.out.println("宝马停车!");
}
@Override
protected void alarm() {
System.out.println("宝马鸣笛!");
}
@Override
protected void engineBoom() {
System.out.println("宝马发动机启动!");
}
}
CarBuilder.java代码如下:
package com.designPattern.builder;
import java.util.ArrayList;
public abstract class CarBuilder {
public abstract void setSequence(ArrayList<String> sequence);
public abstract CarModel getCarModel();
}
BenzBuilder.java代码如下:
package com.designPattern.builder;
import java.util.ArrayList;
/**
* 建造者
* @author yangjianzhou
*
*/
public class BenzBuilder extends CarBuilder{
private BenzModel benz = new BenzModel();
@Override
public void setSequence(ArrayList<String> sequence) {
this.benz.setSequence(sequence);
}
@Override
public CarModel getCarModel() {
return this.benz;
}
}
BMWBuilder.java代码如下:
package com.designPattern.builder;
import java.util.ArrayList;
/**
* 建造者
* @author yangjianzhou
*
*/
public class BMWBuilder extends CarBuilder{
private BMWModel bmwModel = new BMWModel();
@Override
public void setSequence(ArrayList<String> sequence) {
this.bmwModel.setSequence(sequence);
}
@Override
public CarModel getCarModel() {
return this.bmwModel;
}
}
Director.java代码如下:
package com.designPattern.builder;
import java.util.ArrayList;
/**
* 设置车子的启动顺序
* @author yangjianzhou
*
*/
public class Director {
private ArrayList<String> sequence = new ArrayList<String>();
private BenzBuilder benzBuilder = new BenzBuilder();
private BMWBuilder bmwBuilder = new BMWBuilder();
public BenzModel getABenzModel(){
this.sequence.clear();
this.sequence.add("start");
this.sequence.add("stop");
this.benzBuilder.setSequence(sequence);
return (BenzModel)this.benzBuilder.getCarModel();
}
public BenzModel getBBenzModel(){
this.sequence.clear();
this.sequence.add("engineBoom");
this.sequence.add("start");
this.sequence.add("stop");
this.benzBuilder.setSequence(sequence);
return (BenzModel)this.benzBuilder.getCarModel();
}
public BMWModel getCBMWModel(){
this.sequence.clear();
this.sequence.add("alarm");
this.sequence.add("start");
this.sequence.add("stop");
this.bmwBuilder.setSequence(sequence);
return (BMWModel)this.bmwBuilder.getCarModel();
}
public BMWModel getDBMWModel(){
this.sequence.clear();
this.sequence.add("start");
this.bmwBuilder.setSequence(sequence);
return (BMWModel)this.bmwBuilder.getCarModel();
}
}
Client.java代码如下:
package com.designPattern.builder;
public class Client {
public static void main(String[] args) {
Director director = new Director();
System.out.println("==============奔驰A=================");
director.getABenzModel().run();
System.out.println("==============奔驰B=================");
director.getBBenzModel().run();
System.out.println("==============宝马C=================");
director.getCBMWModel().run();
System.out.println("==============宝马D=================");
director.getDBMWModel().run();
}
}
运行结果如下:
==============奔驰A=================
奔驰启动!
奔驰停车!
==============奔驰B=================
奔驰发动机启动!
奔驰启动!
奔驰停车!
==============宝马C=================
宝马鸣笛!
宝马启动!
宝马停车!
==============宝马D=================
宝马启动!
分享到:
相关推荐
**建造者模式(Builder Pattern)**是软件设计模式中的一种,属于创建型模式。它将复杂对象的构建过程与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式通常用于那些需要大量构造参数的对象,通过...
建造者模式(Builder Pattern)是一种创建型设计模式,它提供了一种方法来分步骤构建复杂的对象,使得构建过程和表示分离,使得同样的构建过程可以创建不同的表示。这种模式经常在对象的构造过程中需要进行多种选择...
**建造者模式(Builder Pattern)**是软件设计模式中的一种创建型模式,它允许我们分步骤构建复杂的对象,而无需暴露构建过程。在C++中,这种模式常用于将对象的创建过程与使用过程分离,使得对象的构建更加灵活,...
代理模式(Proxy Pattern)、单例模式(Singleton Pattern)、工厂方法...建造者模式(Builder Pattern)、桥梁模式(Bridge Pattern)、命令模式(Command Pattern)、装饰模式(Decorator Pattern)、迭代器模式...
对象的克隆——原型模式(四) 建造者模式-Builder Pattern 复杂对象的组装与创建——建造者模式(一) 复杂对象的组装与创建——建造者模式(二) 复杂对象的组装与创建——建造者模式(三) 七个结构型模式 七个...
建造者模式(Builder Pattern)是软件工程中一种用于创建对象的抽象工厂方法,它将复杂的对象构造过程分离开来,使得相同的构造过程可以创建不同的表示。这种模式在C#编程中广泛应用于创建对象的复杂性较高,或者...
建造者模式(Builder Pattern)是一种创建型设计模式,允许使用多个简单的对象一步一步构建一个复杂的对象。它将对象的构建过程与表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式的组成 产品...
【创建型模式】设计模式之建造者模式(Builder Pattern) 建造者模式(Builder Pattern)是设计模式中的一个创建型模式,它提供了一种方法来分步骤构造复杂的对象,使得构造过程和表示分离,使得同样的构建过程可以...
在“BuilderPattern”这个压缩包中,可能包含了关于建造者模式的示例代码、解释文档或教程。这些资源可以帮助我们更好地理解建造者模式的实现和应用场景。通过研究这些内容,我们可以学习如何设计和使用建造者模式,...
建造者模式(Builder Pattern)是软件工程中一种用于创建对象的抽象工厂方法,它将复杂的构建过程分解为一系列步骤,使得构建过程可以独立于其表示进行。这种模式允许客户端使用相同的构建过程创建不同表现形式的...
这类模式关注对象的创建过程,包括单例模式(Singleton)、工厂模式(Factory)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。它们提供了创建对象的不同策略,使代码更加灵活...
- 建造者(Builder):将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。 - 对象池(Prototype):通过复制已有对象来创建新对象,以减少对象的创建时间。 2. **结构型模式**:关注如何组合...
建造模式(Builder Pattern)是一种创建型设计模式,它将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。这种模式常用于当构造过程需要步骤化,并且每个步骤可能有多种实现时,比如在软件工程...
建造者模式(Builder Pattern)是一种创建型设计模式,它允许我们分步骤构建复杂对象,而无需暴露构造过程的细节。这种模式将一个复杂的构建过程分解为一系列简单的步骤,使得构造过程可以有不同的解释,从而实现...
在给定的压缩包文件中,"设计模式例子,观察者模式,建造者模式" 提到了两种重要的设计模式:观察者模式(Observer Pattern)和建造者模式(Builder Pattern)。下面我们将深入探讨这两种设计模式的概念、应用场景、...
建造者模式(Builder Pattern)是Java设计模式中的一种,它属于创建型模式,主要用于构建复杂的对象。这种模式将对象的创建过程与表示分离,使得同样的创建过程可以创建不同的表示。在实际开发中,当我们需要创建的...
- 建造者模式(Builder):将复杂对象的构建与表示分离,使得相同的构建过程可以创建不同的表示。 2. **结构型模式**(Structural Patterns): - 代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的...
在本设计模式课程设计中,我们重点探讨了五个核心的设计模式:原型模式、单例模式、抽象工厂模式、代理模式和建造者模式。这些模式在Java编程中具有广泛的应用,能够帮助开发者创建更加灵活、可扩展和易于维护的代码...
建造者模式(Builder Pattern)是设计模式中的一种创建型模式,它允许我们分步骤构建复杂的对象,而无需暴露其构造过程。这种模式的核心思想在于将对象的构建与表示分离,使得构建过程和不同表示可以独立变化,提高...
4. **建造者模式(Builder)**:将复杂对象的构建与其表示分离,使同样的构建过程可以创建不同的表示。在C++11中,可以使用初始化列表和构造函数结合来实现这一模式。 5. **原型模式(Prototype)**:用原型实例...