Java面试之设计模式(2)建造者模式

本文深入讲解了建造者模式(BuilderPattern)的概念与实现,通过类比房屋建设过程,阐述了如何利用多个简单对象构建复杂对象的方法。代码示例展示了如何通过不同类型的建筑工人(如木匠、电工和粉刷匠)共同完成房屋建设,从而理解建造者模式在软件设计中的应用。

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

建造者模式(Builder Pattern)

多个简单对象在一起构建负责对象,类似于多个建筑工人在一起建设房屋,每一个建筑工人都有各自负责的工作,我们可以根据需要房屋的不用调用不同的建筑工人去构建房屋。

在程序中一个复杂对象可以由多个简单对象构建,将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。坏处是代码量增加

建造者模式中主要成员有两个,一是建造者,二是组织者

代码如下:首先创建建造者

/**
 * 工人类
 */
public abstract class Worker {
	// 每个工人都要工作
	public abstract void work();
}

/**
 * 木匠类
 */
public class Carpenter extends Worker {
	@Override
	public void work() {
		System.out.println("木匠做木头");
	}
}

/**
 *	电工
 */
public class Electrician extends Worker {
	@Override
	public void work() {
		System.out.println("电工装修电路");
	}
}

/**
 *	粉刷匠
 */
public class Whitewasher extends Worker {
	@Override
	public void work() {
		System.out.println("粉刷匠刷墙");
	}
}

然后创建组织类

public class Workers {

	private List<Worker> list = new ArrayList<>();
	
	public void addWorker(Worker worker) {
		list.add(worker);
	}
	
	public void doWork() {
		for (Worker worker : list) {
			// 建造者开始工作
			worker.work();
		}
	}
}

/**
 *	根据需求创建合适队伍
 *	导演者
 */
public class WorkersBuilder {

	public Workers createW1() {
		Workers w = new Workers();
		w.addWorker(new Carpenter());	// 加入木匠
		w.addWorker(new Electrician()); // 加入电工
		return w;
	}
	
	/*public Workers createW2() {
		Workers w = new Workers();
		// 加入其他工匠
		return w;
	} */
	
}

测试类如下

public class Test {
	public static void main(String[] args) {
		WorkersBuilder wb = new WorkersBuilder();
		
		Workers w = wb.createW1();
		w.doWork();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值