1. 程式人生 > >Java設計模式菜鳥系列(十五)建造者模式建模與實現

Java設計模式菜鳥系列(十五)建造者模式建模與實現

郵箱 system for face tom 建造者模式 data mar 方法

轉載請註明出處:http://blog.csdn.net/lhy_ycu/article/details/39863125


建造者模式(Builder):工廠類模式提供的是創建單個類的模式。而建造者模式則是將各種產品集中起來進行管理。

簡單起見,就拿之前的工廠方法模式進行改動一下就能夠得到建造者模式。

一、uml建模:

技術分享


二、代碼實現

/**
 * 演示樣例:建造者模式
 * 
 * 與工廠模式的差別:工廠類模式提供的是創建單個類。而建造者模式則是將各種產品集中起來進行管理
 */
interface Sender {
	public void send();
}

class EmailSender implements Sender {

	@Override
	public void send() {
		System.out.println("使用電子郵箱發送...");
	}

}

class SmsSender implements Sender {

	@Override
	public void send() {
		System.out.println("使用短信發送...");
	}
}

class Builder {
	private List<Sender> list = new ArrayList<Sender>();

	public List<Sender> getList() {
		return list;
	}

	public void produceEmailSender(int count) {
		for (int i = 0; i < count; i++) {
			list.add(new EmailSender());
		}
	}

	public void produceSmsSender(int count) {
		for (int i = 0; i < count; i++) {
			list.add(new SmsSender());
		}
	}
}

/**
 * client測試類
 * 
 * @author Leo
 */
public class Test {
	public static void main(String[] args) {
		Builder builder = new Builder();
		builder.produceEmailSender(5);
		builder.produceSmsSender(5);
		/**
		 * 遍歷list中的元素
		 */
		List<Sender> list = builder.getList();
		for (int i = 0; i < list.size(); i++) {
			Sender sender = list.get(i);
			System.out.println(sender);
			sender.send();
		}
	}
}

三、總結

建造者模式將非常多功能集成到一個類裏,這個類能夠創造出比較復雜的東西。所以與工廠模式的差別就是:工廠模式關註的是創建單個產品,而建造者模式則關註創建復合對象。多個部分。

Java設計模式菜鳥系列(十五)建造者模式建模與實現