`

设计模式----建造者模式(builder pattern)

 
阅读更多
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模式

    **建造者模式(Builder Pattern)**是软件设计模式中的一种,属于创建型模式。它将复杂对象的构建过程与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式通常用于那些需要大量构造参数的对象,通过...

    设计模式-建造者模式

    建造者模式(Builder Pattern)是一种创建型设计模式,它提供了一种方法来分步骤构建复杂的对象,使得构建过程和表示分离,使得同样的构建过程可以创建不同的表示。这种模式经常在对象的构造过程中需要进行多种选择...

    c++设计模式-创建型模式-建造者模式

    **建造者模式(Builder Pattern)**是软件设计模式中的一种创建型模式,它允许我们分步骤构建复杂的对象,而无需暴露构建过程。在C++中,这种模式常用于将对象的创建过程与使用过程分离,使得对象的构建更加灵活,...

    java设计模式---诙谐易懂版

    代理模式(Proxy Pattern)、单例模式(Singleton Pattern)、工厂方法...建造者模式(Builder Pattern)、桥梁模式(Bridge Pattern)、命令模式(Command Pattern)、装饰模式(Decorator Pattern)、迭代器模式...

    design-pattern-java.pdf

    对象的克隆——原型模式(四) 建造者模式-Builder Pattern 复杂对象的组装与创建——建造者模式(一) 复杂对象的组装与创建——建造者模式(二) 复杂对象的组装与创建——建造者模式(三) 七个结构型模式 七个...

    C# 设计模式-建造者模式

    建造者模式(Builder Pattern)是软件工程中一种用于创建对象的抽象工厂方法,它将复杂的对象构造过程分离开来,使得相同的构造过程可以创建不同的表示。这种模式在C#编程中广泛应用于创建对象的复杂性较高,或者...

    c++-设计模式之“建造者模式(Builder)”

    建造者模式(Builder Pattern)是一种创建型设计模式,允许使用多个简单的对象一步一步构建一个复杂的对象。它将对象的构建过程与表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式的组成 产品...

    [创建型模式]设计模式之建造者模式(Builder Pattern)

    【创建型模式】设计模式之建造者模式(Builder Pattern) 建造者模式(Builder Pattern)是设计模式中的一个创建型模式,它提供了一种方法来分步骤构造复杂的对象,使得构造过程和表示分离,使得同样的构建过程可以...

    建造者模式【Builder Pattern】(一)问题提出

    在“BuilderPattern”这个压缩包中,可能包含了关于建造者模式的示例代码、解释文档或教程。这些资源可以帮助我们更好地理解建造者模式的实现和应用场景。通过研究这些内容,我们可以学习如何设计和使用建造者模式,...

    设计模式之建造者模式代码示例

    建造者模式(Builder Pattern)是软件工程中一种用于创建对象的抽象工厂方法,它将复杂的构建过程分解为一系列步骤,使得构建过程可以独立于其表示进行。这种模式允许客户端使用相同的构建过程创建不同表现形式的...

    JAVA设计模式-chm版

    这类模式关注对象的创建过程,包括单例模式(Singleton)、工厂模式(Factory)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。它们提供了创建对象的不同策略,使代码更加灵活...

    设计模式 - Design Pattern

    - 建造者(Builder):将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。 - 对象池(Prototype):通过复制已有对象来创建新对象,以减少对象的创建时间。 2. **结构型模式**:关注如何组合...

    设计模式 - 建造模式(C++实例)

    建造模式(Builder Pattern)是一种创建型设计模式,它将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。这种模式常用于当构造过程需要步骤化,并且每个步骤可能有多种实现时,比如在软件工程...

    建造者模式【Builder Pattern】(二)问题改进

    建造者模式(Builder Pattern)是一种创建型设计模式,它允许我们分步骤构建复杂对象,而无需暴露构造过程的细节。这种模式将一个复杂的构建过程分解为一系列简单的步骤,使得构造过程可以有不同的解释,从而实现...

    设计模式例子,观察者模式,建造者模式

    在给定的压缩包文件中,"设计模式例子,观察者模式,建造者模式" 提到了两种重要的设计模式:观察者模式(Observer Pattern)和建造者模式(Builder Pattern)。下面我们将深入探讨这两种设计模式的概念、应用场景、...

    69-Java设计模式之建造者 Builder1

    建造者模式(Builder Pattern)是Java设计模式中的一种,它属于创建型模式,主要用于构建复杂的对象。这种模式将对象的创建过程与表示分离,使得同样的创建过程可以创建不同的表示。在实际开发中,当我们需要创建的...

    设计模式整理代码-pattern.zip

    - 建造者模式(Builder):将复杂对象的构建与表示分离,使得相同的构建过程可以创建不同的表示。 2. **结构型模式**(Structural Patterns): - 代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的...

    设计模式课程设计---使用5个以上不同的设计模式完成(java)

    在本设计模式课程设计中,我们重点探讨了五个核心的设计模式:原型模式、单例模式、抽象工厂模式、代理模式和建造者模式。这些模式在Java编程中具有广泛的应用,能够帮助开发者创建更加灵活、可扩展和易于维护的代码...

    设计模式之创建模式Builder

    建造者模式(Builder Pattern)是设计模式中的一种创建型模式,它允许我们分步骤构建复杂的对象,而无需暴露其构造过程。这种模式的核心思想在于将对象的构建与表示分离,使得构建过程和不同表示可以独立变化,提高...

    C++11全套设计模式-23种指针的用法(a full DesignPattern -DesignPattern.zip

    4. **建造者模式(Builder)**:将复杂对象的构建与其表示分离,使同样的构建过程可以创建不同的表示。在C++11中,可以使用初始化列表和构造函数结合来实现这一模式。 5. **原型模式(Prototype)**:用原型实例...

Global site tag (gtag.js) - Google Analytics