设计模式之建造者模式
来源:互联网 发布:青果软件怎么样 编辑:程序博客网 时间:2024/06/18 09:34
建造者模式
我们前面学习了工厂方法模式和抽象工厂模式,知道了对象的创建可以转移到别的类中创建,那么如果要创建比较复杂的对象,但是创建的过程有一定的规律性,比如建房子,搭桥等有一定模式的,那么我们可以用到建造者模式。
定义
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
使用场景
1. 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
2. 当构造过程必须允许被构造的对象有不同的表示时。
结构
实现
Product类的实现
public class Product { private String title; private String string; private String item; public void setTitle(String title) { this.title = title; } public void setString(String string) { this.string = string; } public void setItem(String item) { this.item = item; }}
Builder接口的设计
public interface Builder { void makeTitle(); void makeString(); void makeItem(); Product getResult();}
具体的Builder的实现
public class HTMLBuilder implements Builder{ private Product htmlproduct; public void makeTitle() { htmlproduct.setTitle("htmlTitle"); } public void makeString() { htmlproduct.setString("htmlString"); } public void makeItem() { htmlproduct.setItem("htmlItem"); } public Product getResult() { return htmlproduct; }}public class TextBuilder implements Builder{ private Product textproduct; public void makeTitle() { textproduct.setTitle("textTitle"); } public void makeString() { textproduct.setString("textString"); } public void makeItem() { textproduct.setItem("textItem"); } public Product getResult() { return textproduct; }}
Diector类的实现
public class Director { private Builder builder; public Director(Builder builder){ this.builder = builder; } public void construct() { builder.makeTitle(); builder.makeString(); builder.makeItem(); } }
我们来测试一下
public class BuilderTest { public static void main(String[] args) { Builder htmlbuilder = new HTMLBuilder(); Director director = new Director(htmlbuilder); director.construct(); Product product = htmlbuilder.getResult(); }}
建造者模式相比于抽象工厂模式和工厂方法模式,可以创建更加复杂的对象,实际生产中java mail应用的建造者模式来创建邮件的各个部分,有兴趣的朋友可以去看看源码,加深理解。
0 0
- 设计模式之建造者
- 设计模式 之 建造者
- 设计模式之建造者
- 设计模式之建造者模式
- 设计模式之建造者模式
- 五 设计模式之建造者模式
- 设计模式之建造者模式
- C# 设计模式之 建造者模式
- 【设计模式】之 Builder 建造者模式
- 设计模式之建造者模式学习
- 设计模式之建造者模式
- 设计模式笔记之---建造者模式
- 设计模式之建造者模式
- 设计模式之建造者模式
- 设计模式之建造者模式
- java设计模式之建造者模式
- 设计模式之建造者模式
- java设计模式之建造者模式
- android 多渠道打包终级教程
- 冒泡排序、直接插入排序及选择排序之Java实现
- 创业?合伙?翻脸?必看7条天规
- MYSQl字符串类型
- Ruby之self,上下文
- 设计模式之建造者模式
- 自定义布局实现listview上拉加载下拉刷新
- ARM汇编指令集2
- hdu3388 Coprime 二分+容斥原理
- 我是一个进程
- 生成和导入Xilinx ROM/RAM的初始化文件.COE(ZT)
- 关联规则相关学术论文网址
- Logstash2.3.4趟坑之集成Redis哨兵模式
- TCP 的那些事儿(上)