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

建造者模式(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();
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章