建造者模式

简述

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
分离了对象子组件的单独构造(由Builder来负责)和装配(由Director负责)。 从而可以构 造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况下使用。

代码描述

- 手机类

public class Phone {

    private Screen screen;
    private Shell shell;
    private Cpu cpu;

    public Screen getScreen() {
        return screen;
    }

    public void setScreen(Screen screen) {
        this.screen = screen;
    }

    public Shell getShell() {
        return shell;
    }

    public void setShell(Shell shell) {
        this.shell = shell;
    }

    public Cpu getCpu() {
        return cpu;
    }

    public void setCpu(Cpu cpu) {
        this.cpu = cpu;
    }
}

- 手机构成组件的三个类

public class Cpu {

    private String cname;

    public Cpu(String cname) {
        this.cname = cname;
    }

    public String getCname() {
        return cname;
    }

    public void setCname(String cname) {
        this.cname = cname;
    }
}

public class Screen {

    private String sname;

    public Screen(String sname) {
        this.sname = sname;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }
}

public class Shell {

    private String sname;

    public Shell(String sname) {
        this.sname = sname;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }
}

- 建造者

public interface Builder {

    Cpu createCpu(String name);

    Screen createScreen(String name);

    Shell createShell(String name);

}

public class PBuilder implements Builder {
    @Override
    public Cpu createCpu(String name) {
        return new Cpu(name);
    }

    @Override
    public Screen createScreen(String name) {
        return new Screen(name);
    }

    @Override
    public Shell createShell(String name) {
        return new Shell(name);
    }
}

  • 工厂
public interface Factory {

    Phone createPhone();

}

public class PhoneFactory implements Factory {

    private Builder builder;

    public PhoneFactory(Builder builder) {
        this.builder = new PBuilder();
    }

    @Override
    public Phone createPhone() {
        Cpu cpu = builder.createCpu("麒麟9000");
        Screen screen = builder.createScreen("三星OLED");
        Shell shell = builder.createShell("P40外壳");
        Phone p40 = new Phone();
        p40.setCpu(cpu);
        p40.setScreen(screen);
        p40.setShell(shell);
        return p40;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值