5.创建者模式(Builder)

创建者模式主要由5部分组成:抽象产品类、实现抽象产品类的具体类、抽象创建者类、实现抽象创建者类的具体类、组装类

 

说明:比工厂抽象工厂增加一个用来组装产品的类,客户端就不用知道对象的构建细节.

 

UML原理图:


5.创建者模式(Builder)_第1张图片
 

 

 

例子:

 

package com.buider;

public class Client {

	public static void main(String[] args){
		Director diretor = new Director(new MotorcycleFactory());
		Motorcycle m = diretor.assembleMotorcycle();
	}
}




package com.buider;

/**
 * 
 * @Title: Director.java
 * @Description: 组装类
 * @author [email protected] 
 * @date 2010-6-3 
 * @version V1.0
 */
public class Director {
	private Factory factory;
	
	public Director(Factory factory){
		this.factory = factory;
	}
	
	//这里进行组装
	public Motorcycle assembleMotorcycle(){
		
		Wheel w = factory.createWheel();
		w.bulid();
		
		Tyre t = factory.createTyre();
		t.bulid();
		
		Engine e = factory.createEngine();
		e.build();
		
		
		return new Motorcycle1();
	}

}






package com.buider;

/**
 * 
 * @Title: Engine.java
 * @Description: 发动机接口类
 * @author [email protected] 
 * @date 2010-6-3 
 * @version V1.0
 */
public interface Engine {
	void build();

}




package com.buider;

public class Engine1 implements Engine {

	public void build() {
		System.out.println("组装摩托车发动机开始");

	}

}







package com.buider;

public interface Factory {
	
	Wheel createWheel();
	Tyre createTyre();
	Engine createEngine();
}







package com.buider;

/**
 * 
 * @Title: Motorcycle.java
 * @Description: 摩托车类接口
 * @author [email protected] 
 * @date 2010-6-3 
 * @version V1.0
 */
public interface Motorcycle {
	void bulid();
}






package com.buider;

/**
 * 
 * @Title: Motorcycle1.java
 * @Description: 具体摩托车类
 * @author [email protected] 
 * @date 2010-6-3 
 * @version V1.0
 */
public class Motorcycle1 implements Motorcycle{

	public void bulid() {
		System.out.println("组装摩托车开始");
		
	}

}




package com.buider;


public class MotorcycleFactory implements Factory {

	public Engine createEngine() {
		return new Engine1();
	}

	public Tyre createTyre() {
		return new Tyre1();
	}

	public Wheel createWheel() {
		return new Wheel1();
	}



}





package com.buider;

/**
 * 
 * @Title: Tyre.java
 * @Description: 摩托车轮胎接口类
 * @author [email protected] 
 * @date 2010-6-3 
 * @version V1.0
 */
public interface Tyre {
	void bulid();
}









package com.buider;

/**
 * 
 * @Title: Tyre1.java
 * @Description:  摩托车轮胎具体类
 * @author [email protected] 
 * @date 2010-6-3 
 * @version V1.0
 */
public class Tyre1 implements Tyre {

	public void bulid() {
		System.out.println("组装摩托车轮胎开始");

	}

}






package com.buider;

/**
 * 
 * @Title: Wheel.java
 * @Description: 车轮接口类
 * @author [email protected] 
 * @date 2010-6-3 
 * @version V1.0
 */
public interface Wheel {
	void bulid();
}







package com.buider;

public class Wheel1 implements Wheel {

	public void bulid() {
		System.out.println("组装摩托车轮开始.");
		
	}

}










 

 

 

 

 

 

 

你可能感兴趣的:(java,UML)