Java设计模式之构建者模式

本文通过一个具体的宇宙飞船构建实例,详细介绍了构建者模式的基本概念、组成部分及其应用方式。该模式适用于将多个小部件组装成一个复杂的产品。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于这种模式的话,我们先来简单的介绍一下。构建者模式也就是说,将很多的小的部件组建成一个产品。可以分为俩个部分,一个是Builder,这是如何构造出小的部件的类。还有一个是Director,这是如何将小的部件组建成产品的类。

现在我们来举一个小的例子:

我们就以这张图片的为基础,来看一个例子:
//这是宇宙飞船的一个类
public class AirShip {
	private OrbitalMoudle  oritalMoudle;
	private Engine engine;
	private EscapeTower escapeTower;
	public OrbitalMoudle getOritalMoudle() {
		return oritalMoudle;
	}
	public void setOritalMoudle(OrbitalMoudle oritalMoudle) {
		this.oritalMoudle = oritalMoudle;
	}
	public Engine getEngine() {
		return engine;
	}
	public void setEngine(Engine engine) {
		this.engine = engine;
	}
	public EscapeTower getEscapeTower() {
		return escapeTower;
	}
	public void setEscapeTower(EscapeTower escapeTower) {
		this.escapeTower = escapeTower;
	}
	public AirShip(OrbitalMoudle oritalMoudle, Engine engine, EscapeTower escapeTower) {
		super();
		this.oritalMoudle = oritalMoudle;
		this.engine = engine;
		this.escapeTower = escapeTower;
	}
	public AirShip() {
		super();
		// TODO Auto-generated constructor stub
	}
	
	


}


//这是与宇宙飞船相关的三个小的部件
class OrbitalMoudle{
	private String name;


	public String getName() {
		return name;
	}


	public void setName(String name) {
		this.name = name;
	}


	public OrbitalMoudle(String name) {
		super();
		this.name = name;
	}


	public OrbitalMoudle() {
		super();
		// TODO Auto-generated constructor stub
	}




}


class Engine{
	private String name;


	public String getName() {
		return name;
	}


	public void setName(String name) {
		this.name = name;
	}


	public Engine(String name) {
		super();
		this.name = name;
	}


	public Engine() {
		super();
		// TODO Auto-generated constructor stub
	}
	
}




class EscapeTower{
	private String name;


	public String getName() {
		return name;
	}


	public void setName(String name) {
		this.name = name;
	}


	public EscapeTower(String name) {
		super();
		this.name = name;
	}


	public EscapeTower() {
		super();
		// TODO Auto-generated constructor stub
	}
	
}
//这是创建宇宙飞船的三个小部件
public interface AirShipBuilder {
	OrbitalMoudle OrbitalMoudleBuilder();
	Engine EngineBuilder();
	EscapeTower EscapeTowerBuilder();
}
//这是将三小的部件组建成宇宙飞船
public interface AirShipDirector {
	AirShip directAirShip();


}
//这是一个实现类
public class LgAirShipBuilder implements AirShipBuilder {


	@Override
	public OrbitalMoudle OrbitalMoudleBuilder() {
		// TODO Auto-generated method stub
		System.out.println("构造李果牌轨道舱");
		return new OrbitalMoudle("李果牌轨道舱");
	}


	@Override
	public Engine EngineBuilder() {
		// TODO Auto-generated method stub
		System.out.println("构造李果牌发动机");
		return new Engine("李果牌发动机");
	}


	@Override
	public EscapeTower EscapeTowerBuilder() {
		// TODO Auto-generated method stub
		System.out.println("构造李果牌逃逸塔");
		return new EscapeTower("李果牌逃逸塔");
	}


}
//在这里我们创造了飞船以后,我们就可以定义操作飞船的方法。
//这也是一个实现类。
public class LgAirShipDirector implements AirShipDirector{
	private AirShipBuilder builder;
	


	public LgAirShipDirector(AirShipBuilder builder) {
		super();
		this.builder = builder;
	}
	


	public LgAirShipDirector() {
		super();
		// TODO Auto-generated constructor stub
	}




	@Override
	public AirShip directAirShip() {
		// TODO Auto-generated method stub
		Engine engine=builder.EngineBuilder();
		OrbitalMoudle orbitalMoudle=builder.OrbitalMoudleBuilder();
		EscapeTower escapeTower=builder.EscapeTowerBuilder();
		AirShip airShip=new AirShip();
		airShip.setEngine(engine);
		airShip.setEscapeTower(escapeTower);
		airShip.setOritalMoudle(orbitalMoudle);
		return airShip;
	}
	
	public void launch(){
		System.out.println("发射");
	}
	


}
//这是一个调用的客户端
public class Client {
	public static void main(String[] args){
		LgAirShipDirector director=new LgAirShipDirector(new LgAirShipBuilder());
		AirShip ship=director.directAirShip();
	  String name= ship.getEngine().getName();
	    System.out.println(name);
	    director.launch();
	    
	}


}
最后的输出的结果为:
构造李果牌发动机
构造李果牌轨道舱
构造李果牌逃逸塔
李果牌发动机
发射
现在我们来看一下它的类图的关系:

这就是我们的一个完整的构建者模式的例子。也就是将零散的小的部件组建成一个产品。这个模式常常也可以与工厂方法模式来结合使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱coding的同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值