转载请注明出处: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设计模式菜鸟系列(十五)建造者模式建模与实现的更多相关文章

  1. Java设计模式菜鸟系列(十四)代理模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39856435 代理模式(Proxy):代理模式事实上就是多一个代理类出来,替原对象进行一些 ...

  2. Java设计模式菜鸟系列(四)工厂方法模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39760895 工厂方法模式(Factory Method) 工厂方法:顾名思义,就是调用工 ...

  3. Java设计模式菜鸟系列(十)模板方法模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39806973 模板方法模式(Template Method):在一个方法中定义了一个算法的 ...

  4. Java设计模式菜鸟系列(一)策略模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39721563 今天開始咱们来谈谈Java设计模式. 这里会结合uml图形来解说,有对uml ...

  5. JAVA设计模式之简单粗暴学建造者模式

    文章由浅入深,先用简单例子说明建造者,然后分析模式的优缺点,最后结合优秀开源框架Mybatis,说明该模式的用处. 1.先定义一个机器人模型 package com.jstao.model; publ ...

  6. java设计模式(二)单例模式 建造者模式

    (三)单例模式 单例模式应该是最常见的设计模式,作用是保证在JVM中,该对象仅仅有一个实例存在. 长处:1.降低某些创建比較频繁的或者比較大型的对象的系统开销. 2.省去了new操作符,减少系统内存使 ...

  7. Java设计模式菜鸟系列(两)建模与观察者模式的实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39755577 观察者(Observer)模式定义:在对象之间定义了一对多的依赖关系,这样一 ...

  8. Java设计模式(四)Builder建造者模式

    一.场景描述 建造者模式同工厂模式.抽象工厂模式一样,用于创建继承类对象. 工厂模式:http://www.cnblogs.com/mahongbiao/p/8618970.html 抽象工厂模式:h ...

  9. Java设计模式之(三)——建造者模式

    1.什么是建造者模式 Separate the construction of a complex object from its representation so that the same co ...

随机推荐

  1. 0503 php中for与foreach的区别

    结论: foreach:只能用于数组和对象,如果是非索引数组,只可以用foreach. for:如果是索引数组,可以用for遍历. foreach循环结构是按照数组内部的指针去循环的,当 foreac ...

  2. React Component(dva)

    Stateless Functional Components(3种方式) class App extends React.Component function App() const App= Re ...

  3. 【Linux】创建逻辑卷管理(LVM)

    LVM是对磁盘进行分区管理的机制.LVM有很多优点:在线扩容,跨磁盘分区......,缺点:管理相对麻烦.创建LVM的过程如下: LVM是基于普通分区或者整块硬盘来进行的.我们首先把这些存储转换为PV ...

  4. SAP computer之architecture

    Simple-As-Possible computer introduces all the cruicial ideas behind computer operation without bury ...

  5. 国外AI界牛人主页 及资源链接

    感觉 好博客要收集,还是贴在自己空间里难忘!!! 原文链接:http://blog.csdn.net/hitwengqi/article/details/7907366 http://people.c ...

  6. THREE.js代码备份——webgl - materials - cube refraction [balls](以上下左右前后6张图片构成立体场景、透明球体效果)

    <!DOCTYPE html> <html lang="en"> <head> <title>three.js webgl - ma ...

  7. 【技术累积】【点】【sql】【17】了解索引

    先上结论 数据库数据以平衡树进行聚合索引--主键的作用: 数据每行都存在叶子节点: 单独字段的索引,单独存在,且将该字段值取出: 单独字段的索引,查到对应的主键id,再通过聚合索引查到数据: 多字段索 ...

  8. HTML 5语义化标签

    HTML 5的革新之一:语义化标签一节元素标签. 在HTML 5出来之前,我们用div来表示页面章节,但是这些div都没有实际意义.(即使我们用css样式的id和class形容这块内容的意义).这些标 ...

  9. 【转载】Jsp页面传Json数据到服务端,转对象或集合进行数据处理

    需求:1.将页面数据带到服务端并转成对象,2.将页面的集合数据带到服务端转List实现:用ajax请求传递数据,数据格式为json JS方法: testJsonMethod = function(){ ...

  10. 单调队列 && 单调栈

    单调队列 && 单调栈 单调队列 维护某个滑动区间的min or max,可用于dp的优化 以维护min为例,采用STL双端队列实现 每次加入元素x前 先检查队首元素==滑动后要删除的 ...