建造模式

本文深入解析建造者模式,探讨如何将产品的内部表象与生成过程分离,以实现复杂对象的逐步构建。通过定义一系列的建造步骤,使得最终产品能够拥有不同的内部结构。

概述

       建造模式可以将一个产品内部表象与产品生成过程分割开,从而可以使一个建造过程生成具有不同内部表象的产品对象。

       内部表象:一个产品常有不同的组成成分作为产品的零件,零件可能是对象,也可能不是对象,他们通常叫做产品的内部表象。

       不同产品有不同的内部表象,也就是不同的零件,使用建造模式可以使客户端不需要知道所生产产品对象有哪些零件,是怎么建造的,及怎么组成产品。

          所以我们就希望能够像使用汽车一样使用复杂的对象:直接告诉你我需要的对象名或者对象类型,你返回一个完成的对象实例给我。建造者返回给客户一个完整的的产品对象,而客户端无须关心该对象所包含的额属性和组建方式,这就是建造者模式的设计动机。

       建造者模式构建复杂对象就像造汽车一样,是一个一个组件一个一个步骤创建出来的,它允许用户通过制定的对象类型和内容来创建他们,但是用户并不需要知道这个复杂对象是如何构建的,它只需要明白通过这样做我可以得到一个完整的复杂对象实例。

       

 

   抽象建造者Builder:给顶一个接口,规范产品对象的各个成分建造。有两种方法1,产品各个成分构造过程  buildPartyA,有多少个零件就有多少个方法  2  返回结果方法

    具体建造者concreteBuilder:抽象建造者的实现。

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

       导演者角色和客户端打交到,导演者将客户端创建产品的请求划分为对各个零件建造的请求,将这些请求委派给具体建造者角色,建造者角色是做具体建造工作,却不 为客户端所知,

     一般来说,每个产品类就有过一个相应的具体建造者类,这些产品应当有一样数目的零件,而一个零件有一个建造方法。

 

class Porduct{}
abstract class Builder{
    public abstract void buildPart1();
    public abstract void buildPart2();
    public abstract Porduct returnProduct();
}

class ConcreteBuilder extends Builder{

    private Porduct product = new Porduct();
    @Override
    public void buildPart1() {
    }
    @Override
    public void buildPart2() {    
    }
    @Override
    public Porduct returnProduct() {
        return product;
    }
}

class Driector{
    private Builder b = new ConcreteBuilder();
    public void construct(){
        b.buildPart1();
        b.buildPart2();
        b.returnProduct();
    }
}
View Code

 

JavaMeal

使用场景

           1  产品对象有复杂的内部结构

           2  对象属性相互依赖,如果一个属性必须在另一个属性被赋值后赋值。模式可以实行一种分步骤经行的建造过程。

           3  即使属性间无依赖,但属性赋值前不能使用。

 

转载于:https://www.cnblogs.com/whesuanfa/p/7382047.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值