博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式梳理——建造者模式
阅读量:4097 次
发布时间:2019-05-25

本文共 1502 字,大约阅读时间需要 5 分钟。

一、概述

       建造者模式(Builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 

二、UML图示

三、编程实现

       该程序主要通过组装电脑的功能实现。

1、定义组装过程(Builder)

public abstract class Builder {    //第一步:装CPU    public abstract void  buildCPU();    //第二步:装主板    public abstract void buildMainboard();    //第三步:装硬盘    public abstract void buildHD();    //返回产品的方法:获得组装好的电脑    public abstract Computer getComputer();}

2、具体建造者

public class ConcreteBuilder extends Builder {    Computer computer;    public ConcreteBuilder(){        computer = new Computer();    }    @Override    public void buildCPU() {        computer.add("CPU");    }    @Override    public void buildMainboard() {        computer.add("主板");    }    @Override    public void buildHD() {        computer.add("硬盘");    }    @Override    public Computer getComputer() {        return computer;    }}

3、指挥者Director

public class Director {    //指挥装机人员组装电脑    public void construct(Builder builder){        builder. buildCPU();        builder.buildMainboard();        builder.buildHD();    }}

4、产品Product

public class Computer {    private List
parts = new ArrayList<>(); public void add(String part){ parts.add(part); } public void show(){ for (int i = 0;i

5、测试

public class Test {    public static void main(String[] args) {        //        Director director = new Director();        Builder builder = new ConcreteBuilder();        director.construct(builder);        Computer computer = builder.getComputer();        computer.show();    }}

注:参考文献《大话设计模式》程杰著。

你可能感兴趣的文章
再见,Eclipse...
查看>>
超全汇总!B 站上有哪些值得学习的 AI 课程...
查看>>
如果你还不了解 RTC,那我强烈建议你看看这个!
查看>>
神器面世:让你快速在 iOS 设备上安装 Windows、Linux 等操作系统!
查看>>
沙雕程序员在无聊的时候,都搞出了哪些好玩的小玩意...
查看>>
太赞了!GitHub 标星 2.4k+,《可解释机器学习》中文版正式开放!
查看>>
程序员用 AI 修复百年前的老北京视频后,火了!
查看>>
漫话:为什么你下载小电影的时候进度总是卡在 99% 就不动了?
查看>>
我去!原来大神都是这样玩转「多线程与高并发」的...
查看>>
当你无聊时,可以玩玩 GitHub 上这个开源项目...
查看>>
B 站爆红的数学视频,竟是用这个 Python 开源项目做的!
查看>>
安利 10 个让你爽到爆的 IDEA 必备插件!
查看>>
自学编程的八大误区!克服它!
查看>>
GitHub 上的一个开源项目,可快速生成一款属于自己的手写字体!
查看>>
早知道这些免费 API,我就可以不用到处爬数据了!
查看>>
Java各种集合类的合并(数组、List、Set、Map)
查看>>
JS中各种数组遍历方式的性能对比
查看>>
Mysql复制表以及复制数据库
查看>>
进程管理(一)
查看>>
linux 内核—进程的地址空间(1)
查看>>