zoukankan      html  css  js  c++  java
  • Java设计模式菜鸟系列(十五)建造者模式建模与实现

    转载请注明出处: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();
    		}
    	}
    }

    三、总结

    建造者模式将非常多功能集成到一个类里,这个类能够创造出比較复杂的东西。所以与工厂模式的差别就是:工厂模式关注的是创建单个产品,而建造者模式则关注创建复合对象。多个部分。

  • 相关阅读:
    本月时间按天显示
    微信小程序----当前时间的时段选择器插件(今天、本周、本月、本季度、本年、自定义时段)
    vuex进行传值
    echart 自定义 formatter
    git 登录流程
    Java学习-反射
    mysql数据类型char、varchar、text的一些区别
    微信小程序踩坑记录
    Rancher、Helm、HelmFile
    句子迷 2015_01_10
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/6888912.html
Copyright © 2011-2022 走看看