大话设计模式读后感之建造者模式(JAVA)
来源:互联网 发布:听唱戏的软件 编辑:程序博客网 时间:2024/06/04 20:14
一、建造者模式
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
JDK中使用到
• java.lang.StringBuilder#append()
• java.lang.StringBuffer#append()
• java.nio.ByteBuffer#put() (CharBuffer, ShortBuffer, IntBuffer,LongBuffer, FloatBuffer 和DoubleBuffer与之类似)
• javax.swing.GroupLayout.Group#addComponent()
• java.sql.PreparedStatement
• java.lang.Appendable的所有实现类
简单的建造者模式
产品类
import java.util.ArrayList;import java.util.List;/** * Created with Intellij IDEA. * User : Yebinghuan * Created on 2017/8/15. * Description : * 产品类:由多个部件组成 */public class Product { List<String> parts=new ArrayList<String>(); //添加产品部件 public void Add(String part){ parts.add(part); } public void show(){ System.err.println("产品创建-----"); parts.forEach(System.out::println);//lambda表达式 java8新特性 }}
/** * Created with Intellij IDEA. * User : Yebinghuan * Created on 2017/8/15. * Description : * Builder类:抽象建造者类,确定产品由两个部件PartA和PartB组成,并声明一个得到产品建造后的结果集 */public abstract class Builder { //零件A public abstract void PartA(); //零件B public abstract void PartB(); public abstract Product GeteResult();}
零件一
/** * Created with Intellij IDEA. * User : Yebinghuan * Created on 2017/8/15. * Description : * 产品1 */public class ConcreteBuilderOne extends Builder { Product parts=new Product(); @Override public void PartA() { parts.Add("水泥"); } @Override public void PartB() { parts.Add("水"); } @Override public Product GeteResult() { return parts; }}
零件2
/** * Created with Intellij IDEA. * User : Yebinghuan * Created on 2017/8/15. * Description : * 产品2 */public class ConcreteBuilderTwo extends Builder{ Product parts=new Product(); @Override public void PartA() { parts.Add("混泥土"); } @Override public void PartB() { parts.Add("鸟头"); } @Override public Product GeteResult() { return parts; }}
创建一个装配类
/** * Created with Intellij IDEA. * User : Yebinghuan * Created on 2017/8/15. * Description : * 指挥类 */public class Director { public void Construct(Builder builder){ builder.PartA(); builder.PartB(); }}
public class Main { public static void main(String[] args) { Director director=new Director(); Builder builderOne=new ConcreteBuilderOne();//产品一 Builder builderTwo=new ConcreteBuilderTwo();//产品二 director.Construct(builderOne);//组合成一个产品1 Product product=builderOne.GeteResult(); product.show(); director.Construct(builderTwo); product=builderTwo.GeteResult(); product.show(); }}
建造者模式分析
1、建造者模式可以让客户端不必知道产品内部如何装配;
2、 具体的建造者类之间都是相互独立的,增加了扩展性。
使用场景
已经知道要创建对象的基本固定轮廓,但是对象的内部组成构件又可能会有复杂的变化时使用。
阅读全文
0 0
- 大话设计模式读后感之建造者模式(JAVA)
- 读前辈的大话设计模式(十)之建造者模式,抒自己的读后感
- 大话设计模式读后感之代理模式(JAVA)
- 《大话设计模式》java实现之建造者模式
- 大话设计模式之建造者模式
- 大话设计模式之建造者模式
- 大话设计模式之建造者模式
- 大话设计模式之建造者模式
- 大话设计模式之建造者模式
- 大话设计模式之建造者模式
- 大话设计模式之建造者模式(生成器模式) 建造队与指挥者的纠缠
- 大话设计模式读后感之工厂模式
- 大话设计模式读后感之策略模式
- 大话设计模式读后感之装饰模式
- 大话设计模式读后感之原型模式
- 大话设计模式读后感之外观模式
- 《大话设计模式》——读后感 (8)好菜每回味不同——建造者模式之基础案例(1)
- 《大话设计模式》——读后感 (8)好菜每回味不同——建造者模式之经典案例(2)
- jenkins 使用遇到的坑
- 最大熵学习笔记(五)最优化算法
- bug调试
- cookie 学习笔记
- struts2--通过超链接动态加载国际化资源文件
- 大话设计模式读后感之建造者模式(JAVA)
- poj2395 Kruskal题解(Prim好像过不了)
- 爬虫实践(三)--了解scrapy
- ajax与action进行数据交互
- Python中super()方法
- ArrayList的add()扩容原理
- mysql max_allowed_packet 设置
- 【Spring in action】依赖注入DI和AOP切面
- 命名的最终目的是增加易读性,可读性。