建造者模式(Builder)

在建造大楼时,需要先打牢地基,搭建框架,然后自下而上地一层一层盖起来。通常,在建造这种具有复杂结构的物体时,很难一气呵成。我们需要首先建造组成这个物体的各个部分,然后分阶段将它们组装起来。(可以理解为按照模块组装)

 

 

### 具体职责

-  Builder 为你实现主逻辑要实现的抽象方法

-  Director 为你具体使用builder完成具体的逻辑使用代码 就是调用Builder的函数实现实际功能

- Director类不知道自己使用的究竟是Builder类的哪个子类也好。这是因为只有不知道子类才能替换。不论是将TextBuilder的实例传递给Director,还是将HTMLBuilder类的实例传递给Director,它都可以正常工作,原因正是Director类不知道Builder类的具体的子类。

- xxxx 任何多个具体的实现类

 

扩展: 这里可以联想到Template Method 设计模式中 由父类控制 子类的使用过程,但是这里换了对象

 

|Builder 定义了决定文档结构的方法的抽象类

|Director 编写1个文档的类

|TextMovieBuilder| 使用纯文本(普通字符串)编写电影文档的类

|HTMLMovieBuilder| 使用HTML编写电影文档的类

|Main| 测试程序行为的类

 

### UML

 

建造者模式(Builder)

 

 

时序图:

 

建造者模式(Builder)

 

 

例子实现code:

 

Builder

Builder角色负责定义用于生成实例的接口(API)。Builder角色中准备了用于生成实例的方法。

在示例程序中,由Builder类扮演此角色。

 

1 public abstract class Builder { 2 3 4 5 abstract void makeMovieTitile(String title); 6 7 8 9 abstract void makeMovieBody(String body); 10 11 12 13 abstract void makeMovieItem(String [] items); 14 15 16 17 abstract void close(); 18 19 20 21 }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgygys.html