手写建造者模式

本文介绍了建造者模式的基本概念,包括其定义、工作原理和组成部分。通过讲解,展示了如何将复杂对象的构建与表示分离,使得可以使用相同的构建过程生成不同的表示形式。文章还探讨了实际应用中如何实现建造者模式。
摘要由CSDN通过智能技术生成

1、简介

定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

2、原理及组成

建造者模式

3、实现

需要创建product复杂对象,Director只有通过传入不同的Builder来获取product方法,实现了导演和product

package com.designpattern.builder;
/**
 * 笔  -- 抽象产品类
*/
public abstract class Pen {
	/**笔芯**/
	private String cartridge;
	/**外壳**/
	private String shell;
	
	public String getCartridge() {
		return cartridge;
	}
	public void setCartridge(String cartridge) {
		this.cartridge = cartridge;
	}
	public String getShell() {
		return shell;
	}
	public void setShell(String shell) {
		this.shell = shell;
	}
}

package com.designpattern.builder;
/**
 * 抽象建造者  -- 笔builder
*/
public abstract interface PenBuilder {
	/**
	 * 生产笔芯
	 */
	abstract void buildCartridge();
	/**
	 * 生产外壳
	 */
	abstract void buildShell();
	/**
	 * 组装笔
	 */
	abstract Pen buildPen();
}

package com.designpattern.builder.impl;
 
import com.designpattern.builder.BallpointPen;
import com.designpattern.builder.Pen;
import com.designpattern.builder.PenBuilder;
 
/**
 * 建造者(具体)  -- 圆珠笔builder
*/
public class BallpointPenBuilder implements PenBuilder{
	
	Pen pen;
	public BallpointPenBuilder(){
		pen = new BallpointPen();
	}
	
	@Override
	public void buildCartridge() {
		pen.setCartridge("圆珠笔笔芯");
	}
 
	@Override
	public void buildShell() {
		pen.setShell("圆珠笔外壳");
	}
 
	@Override
	public Pen buildPen() {
		return pen;
	}
 
}


package com.designpattern.builder;
/**
 * 导演类  Director
*/
public class PenDirector {
 
	public Pen constructPen(PenBuilder pen_builder){
		//生产笔芯
		pen_builder.buildCartridge();
		//生产外壳
		pen_builder.buildShell();
		//组装笔
		return pen_builder.buildPen();
	}
}

package com.designpattern.builder;
 
import com.designpattern.builder.impl.BallpointPenBuilder;
import com.designpattern.builder.impl.BrushPenBuilder;
 
/**
 * 测试
*/
public class Test {
	public static void main(String[] args) {
		PenDirector director = new PenDirector();
		Pen ballpointpen = director.constructPen(new BallpointPenBuilder());
		Pen brushpen = director.constructPen(new BrushPenBuilder());
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值