轉載請註明出處: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());
}
}
}
/**
* 客戶端測試類
*
* @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();
}
}
}
三、總結
建造者模式將很多功能集成到一個類裏,這個類可以創造出比較複雜的東西。所以與工廠模式的區別就是:工廠模式關注的是創建單個產品,而建造者模式則關注創建複合對象,多個部分。