建造者模式
来源:互联网 发布:黑马程序员教程百度云 编辑:程序博客网 时间:2024/06/11 04:53
建造者模式(Builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
如果用了建造者模式,那么用户就只需指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需知道了。
//Product类--产品类,由多个部件组成。class Product{ List<String> parts = new List<String>(); public void add(String part) { parts.add(part); } public void show() { foreach(String s : parts) System.out.print(s); }}
//Builder类--抽象建造者类,确定产品由两个部件PartA和PartB组成,并声明一个得到产品建造后结果的方法GetResult。abstract class Builder{ public abstract void buildPartA(); public abstract void buildPartB(); public abstract Product getResult();}
class ConcreteBuilder1 extends Builder{ private Product product = new Product(); @override public void buildPartA() { product.add(“部件A”); } @override public void buildPartB() { product.add(“部件B”); } @override public Product getResult() { return product; }}
class ConcreteBuilder2 extends Builder{ private Product product = new Product(); @override public void buildPartA() { product.add(“部件X”); } @override public void buildPartB() { product.add(“部件Y”); } @override public Product getResult() { return product; }}
//Director类--指挥者类class Director{ public void construct(Builder builder) { builder.BuilderPartA(); builder.BuilderPartB(); }}
main(){ Director director = new Director(); Builder b1 = new ConcreteBuilder1(); Builder b2 = new ConcreteBuilder2(); director.construct(b1); Product p1 = b1.getResult(); p1.show(); director.construct(b2); Product p2 = b2.getResult(); p2.show();}
Builder是为创建一个Product对象的各个部件指定的抽象接口。
ConcreteBuilder是具体建造者,实现Builder接口,构造和装配各个部件。
Director是指挥者,用于创建一些复杂对象,这些对象内部构建的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。
Product是具体产品角色。
建造者模式的好处就是使得建造代码与表示代码分离,由于建造者隐藏了该产品是如何组装的,所以若需改变一个产品的内部表示,只需要再定义一个具体的建造者就可以了。
建造者模式是当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时适用的模式。
0 0
- Builder 建造者模式
- 建造者模式
- 设计模式-------建造者
- 建造者模式
- 建造者模式(Builder)
- 建造者模式(Builder)
- 建造者模式
- 建造者模式 - builder
- 建造者模式
- Builder建造者模式
- 建造者模式(Builder)
- 建造者模式(builder)
- 建造者模式
- java建造者模式
- 建造者模式
- 建造者模式
- 建造者模式(Builder)
- 建造者模式
- XSS攻击常识及常见的XSS攻击脚本汇总
- 剑指offer之斐波那契数列
- Play Framework template engine模板引擎&模板隐含变量
- Intellij Idea识别Java Web项目
- play读取配置文件的方法
- 建造者模式
- 蓝桥杯-回文数
- kernel_mutex--mysql5.5.18
- 解决IDEA导入Myclipse项目的时候没有识别为Web项目的问题
- Ueditor使用方法,手把手教你
- android之MVP
- elk - kibana 显示red
- ueditor在chrome浏览器中,图片上传的弹框有很大的延迟,其他浏览器都正常
- HTML5和CSS3