java-建造者模式
Posted 鑫男
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java-建造者模式相关的知识,希望对你有一定的参考价值。
概念:使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。
主要解决:主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。
何时使用:一些基本部件不会变,而其组合经常变化的时候。
如何解决:将不改变的部分剥离出来(就是导演者)
优点: 1、建造者独立,易扩展。 2、便于控制细节风险。
缺点: 1、产品必须有共同点,范围有限制。 2、如内部变化复杂,会有很多的建造类。
使用场景:
1 需要生成的产品对象的属性或者方法相互依赖,需要指定其生成顺序,而其生成顺序一般固定.
2 对象的创建过程,独立于该对象所在类
与工厂模式区别:
工厂模式只关心创建出这个对象,只需要new 出类的对象就行,不关心这个对象的组成部分。建造者模式则关心产品的细节(产品有很多不同方法,方法的不同执行顺序,创建出不同的产品),其导演者持有产品方法的执行顺序。
简单来说,工厂方法关注整体(产品这一个整体),建造者方法关注细节(依赖产品的各个部件按顺序一步步组装出产品)
建造者模式主要包含四个角色
Product(产品角色): 一个具体的产品对象。
Builder(抽象建造者): 创建一个Product对象的各个部件指定的抽象接口。
ConcreteBuilder(具体建造者): 实现抽象接口,构建和装配各个部件。
Director(指挥者): 构建一个使用Builder接口的对象。它主要是用于创建一个复杂的对象。它主要有两个作用,一是:隔离了客户与对象的生产过程,二是:负责控制产品对象的生产过程。
实例如下:(创造不同的机器人)
新建一个产品类 人
//抽象创建者
//具体创建者
指挥者类的作用:构建一个使用Builder接口的对象。它主要是用于创建一个复杂的对象。它主要有两个作用,一是:隔离了客户与对象的生产过程(动态传入buidMan,生产不同类型机器人),二是:负责控制产品对象的生产过程(createHumanByDirector()方法负责生产的过程步骤)。
//测试代码
End
以上是关于java-建造者模式的主要内容,如果未能解决你的问题,请参考以下文章