博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式之建造者模式
阅读量:6191 次
发布时间:2019-06-21

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

    什么是建造者模式,GOF给出的定义是:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。这句话其实表达的意思就是把构建对象这个复杂的过程和组成这个对象的部件解耦,使得相同的转配方式可以装配出不同的产品。

    下面是建造者模式的类图:

    下面我们用构建汽车的例子来介绍一下什么是建造者模式:

    1.首先我们先创建一个汽车的产品对象:

public class Car {    private String tires;   //轮胎    private String engine;  //引擎    private String steeringWheel;  //方向盘    public String getTires() {        return tires;    }    public void setTires(String tires) {        this.tires = tires;    }    public String getEngine() {        return engine;    }    public void setEngine(String engine) {        this.engine = engine;    }    public String getSteeringWheel() {        return steeringWheel;    }    public void setSteeringWheel(String steeringWheel) {        this.steeringWheel = steeringWheel;    }    }

    2.创建一个抽象的汽车建造类

public abstract class CarBuilder {    public Car car= new Car();        public abstract void buildTires();    public abstract void buildEngine();    public abstract void buildSteeringWheel();        public Car buildCar(){        return this.car;    }    }

3.创建一个具体的汽车建造类(专门建造跑车)

public class SprotCarBuilder extends CarBuilder{    @Override    public void buildTires() {        this.car.setTires("跑车的轮胎");            }    @Override    public void buildEngine() {        this.car.setEngine("跑车的引擎");            }    @Override    public void buildSteeringWheel() {       this.car.setSteeringWheel("跑车的方向盘");            }}

4.创建一个指挥者类(调用建造类创建产品)

public class CarDirector {        private CarBuilder carBuilder;        public CarDirector(CarBuilder carBuilder){        this.carBuilder = carBuilder;    }        public Car construct(){        this.carBuilder.buildEngine();        this.carBuilder.buildSteeringWheel();        this.carBuilder.buildTires();        return this.carBuilder.buildCar();    }    }

5.客户端调用代码:

public class Custom {      public static void main(String[] args) {          CarBuilder carBuilder = new SprotCarBuilder();          CarDirector director = new CarDirector(carBuilder);          Car car = director.construct();          System.out.println(car.getEngine());          System.out.println(car.getSteeringWheel());          System.out.println(car.getTires());    }}

使用建造者模式对于用户而言只需要知道创建具体产品的建造者即可,对于如何创建对象用户是不关心的。当需要创建其他的产品对象时只需要创建对应的建造类即可,符合设计模式中的开闭原则,但是如果每一个产品类都使用建造者模式会出现大量的建造者类,程序将变得难以维护,所以如果我们所需要的产品类并没有想象的那么复杂建议就没有必要使用建造者模式。

转载于:https://www.cnblogs.com/suyang-java/p/10337543.html

你可能感兴趣的文章
iOS中关于文件操作
查看>>
龙狼三国双培养脚本
查看>>
Win7 下安装 Sketsa.SVG.Editor v7.0.1
查看>>
使用Ahk2Exe工具将AutoHotKey脚本打包到Windows可执行文件
查看>>
Adobe Acrobat pro给pdf文件添加水印和加密编辑功能
查看>>
如何看待 Kotlin 成为 Android 官方支持开发语言?
查看>>
[unity3d]插件2d toolskit
查看>>
智能平台管理接口 (IPMI)
查看>>
应用chroot构建最小运行系统
查看>>
eclipse 插件 subclipse plugin 中修改已经登录的帐户密码的方法
查看>>
maven配置
查看>>
Request获取各种路径
查看>>
我的友情链接
查看>>
linux内核之字符设备驱动图解
查看>>
IE8兼容placeholder
查看>>
在JavaScript中仿真Java的enum
查看>>
shell编程 date、md5sum、curl
查看>>
黑站利器-中国菜刀的功能介绍和使用方法
查看>>
快排序和堆排序,最小堆、最大堆
查看>>
存储服务器格式化恢复方法
查看>>