栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

设计模式 创建者模式 -- 建造者模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

设计模式 创建者模式 -- 建造者模式

1. 建造者模式
1.1 引入



1.2 定义



1.3 结构


1.3.1 典型的复杂对象类代码


1.3.2 典型的抽象建造者类代码


1.3.3 典型的具体建造者类代码


1.3.4 典型的指挥者类代码


1.4 实例: 创建共享单车

创建共享单车:



1.4.1 Bike 自行车类
package com.tian.pattern.builder.demo1;


public class Bike {

    private String frame;//车架

    private String seat;//车座

    public String getframe() {
        return frame;
    }

    public void setframe(String frame) {
        this.frame = frame;
    }

    public String getSeat() {
        return seat;
    }

    public void setSeat(String seat) {
        this.seat = seat;
    }
}

1.4.2 Builder 构造者类
package com.tian.pattern.builder.demo1;


public abstract class Builder {

    //声明Bike类型的变量,并进行赋值
    protected Bike bike = new Bike();

    public abstract void buildframe();

    public abstract void buildSeat();

    //构建自行车的方法
    public abstract Bike createBike();
}

1.4.3 MobileBuilder 摩拜单车构造者类
package com.tian.pattern.builder.demo1;


public class MobileBuilder extends Builder {

    public void buildframe() {
        bike.setframe("碳纤维车架");
    }

    public void buildSeat() {
        bike.setSeat("真皮车座");
    }

    public Bike createBike() {
        return bike;
    }
}

1.4.4 OfoBuilder ofo单车构造者类
package com.tian.pattern.builder.demo1;


public class OfoBuilder extends Builder {
    public void buildframe() {
        bike.setframe("铝合金车架");
    }

    public void buildSeat() {
        bike.setSeat("橡胶车座");
    }

    public Bike createBike() {
        return bike;
    }
}

1.4.5 Director 指挥者类
package com.tian.pattern.builder.demo1;


public class Director {

    //声明builder类型的变量
    private Builder builder;

    public Director(Builder builder) {
        this.builder = builder;
    }

    //组装自行车的功能
    public Bike construct() {
        builder.buildframe();
        builder.buildSeat();
        return builder.createBike();
    }
}

1.4.6 Client 客户端类(测试类)
package com.tian.pattern.builder.demo1;


public class Client {
    public static void main(String[] args) {
        //创建指挥者对象
        Director director = new Director(new MobileBuilder());
        //让指挥者只会组装自行车
        Bike bike = director.construct();

        System.out.println(bike.getframe());
        System.out.println(bike.getSeat());
    }
}

1.4.7 运行结果


1.5 可以简化系统结构,可以把指挥者类和抽象建造者进行结合

上面示例是 Builder模式的常规用法,指挥者类 Director在建造者模式中具有很重要的作用,它用于指导具体构建者如何构建产品,控制调用先后次序,并向调用者返回完整的产品类,但是有些情况下需要简化系统结构,可以把指挥者类和抽象建造者进行结合(把指挥者类的功能集成到抽象建造者类,然后删去指挥者类)

说明:


1.6 模式优缺点分析
1.6.1 优点


1.6.2 缺点


1.7 模式适用环境



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/282211.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号