java设计模式-建造者模式

概念:使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。

主要解决:主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。

何时使用:一些基本部件不会变,而其组合经常变化的时候。

如何解决:将不改变的部分剥离出来(就是导演者)

优点: 1、建造者独立,易扩展。 2、便于控制细节风险。

缺点: 1、产品必须有共同点,范围有限制。 2、如内部变化复杂,会有很多的建造类。

使用场景: 

1 需要生成的产品对象的属性或者方法相互依赖,需要指定其生成顺序,而其生成顺序一般固定.

2 对象的创建过程,独立于该对象所在类

 

与工厂模式区别:

工厂模式只关心创建出这个对象,只需要new 出类的对象就行,不关心这个对象的组成部分。建造者模式则关心产品的细节(产品有很多不同方法,方法的不同执行顺序,创建出不同的产品),其导演者持有产品方法的执行顺序。

简单来说,工厂方法关注整体(产品这一个整体),建造者方法关注细节(依赖产品的各个部件按顺序一步步组装出产品)

 

 建造者模式主要包含四个角色

Product(产品角色): 一个具体的产品对象。

Builder(抽象建造者): 创建一个Product对象的各个部件指定的抽象接口。

ConcreteBuilder(具体建造者): 实现抽象接口,构建和装配各个部件。

Director(指挥者): 构建一个使用Builder接口的对象。它主要是用于创建一个复杂的对象。它主要有两个作用,一是:隔离了客户与对象的生产过程,二是:负责控制产品对象的生产过程。

实例如下:(创造不同的机器人)

新建一个产品类 人

 

//抽象创建者

 

//具体创建者

 

 

指挥者类的作用:构建一个使用Builder接口的对象。它主要是用于创建一个复杂的对象。它主要有两个作用,一是:隔离了客户与对象的生产过程(动态传入buidMan,生产不同类型机器人),二是:负责控制产品对象的生产过程(createHumanByDirector()方法负责生产的过程步骤)。

//测试代码

End

 

posted on 2019-03-11 23:18  鑫男  阅读(151)  评论(0编辑  收藏  举报

导航