首页 > 编程语言 >04.(创建型模式)java设计模式之建造者模式

04.(创建型模式)java设计模式之建造者模式

时间:2022-12-06 22:12:31浏览次数:37  
标签:java Computer void 建造 模式 computer Override 设计模式 public

一、什么是建造者模式

  • 使⽤多个简单的对象⼀步⼀步构建成⼀个复杂的对象,将⼀个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
  • 允许⽤户只通过指定复杂对象的类型和内容就可以构建它们,不需要知道内部的具体构建细节。

二、建造者的实现方式

模式结构分析:

Product(具体产品类):产品⻆⾊。

Builder(抽象建造类):抽象建造者,定义多个通⽤⽅法和构建⽅法。

ConcreteBuilder(具体建造类):具体建造者,可以有多个。

Director(指挥者类):指挥者,控制整个组合过程,将需求交给建造者,由建造者去创建对象。

类关系图:

统一模型:

代码实现:

查看代码
/*
* 建造者中具体的产品信息
* */
@Data
public class Computer {
    private String memory;
    private String cpu;
    private String mainboard;
    private String disk;
    private String power;
}
/*
* 抽象建造者
* */
public interface IComputerBuilder {
    void buildCpu();
    void buildMainboard();
    void buildDisk();
    void buildPower();
    void buildMemory();
    Computer createComputer();
}
/*
* 具体建造者
* */
public class HighComputerBuilder implements IComputerBuilder{
    Computer computer;
    public  HighComputerBuilder(){
        computer=new Computer();
    }
    @Override
    public void buildCpu() {
     computer.setCpu("这个是高配的CPU……");
    }

    @Override
    public void buildMainboard() {
        computer.setMainboard("这个是高配的主板……");
    }

    @Override
    public void buildDisk() {
        computer.setDisk("这个是高配的硬盘……");
    }

    @Override
    public void buildPower() {
        computer.setPower("这个是高配的电源……");
    }

    @Override
    public void buildMemory() {
        computer.setMemory("这个是高配的内存……");
    }

    @Override
    public Computer createComputer() {
        return computer;
    }
}
/*
 * 具体建造者
 * */
public class LowerComputerBuilder implements IComputerBuilder{
    Computer computer;
    public  LowerComputerBuilder(){
        computer=new Computer();
    }
    @Override
    public void buildCpu() {
        computer.setCpu("这个是低配的CPU……");
    }

    @Override
    public void buildMainboard() {
        computer.setMainboard("这个是低配的主板……");
    }

    @Override
    public void buildDisk() {
        computer.setDisk("这个是低配的硬盘……");
    }

    @Override
    public void buildPower() {
        computer.setPower("这个是低配的电源……");
    }

    @Override
    public void buildMemory() {
        computer.setMemory("这个是低配的内存……");
    }

    @Override
    public Computer createComputer() {
        return computer;
    }
}
/*
* 指挥者,控制整个组合过程,将需求交给建
造者,由建造者去创建对象
* */
public class ComputerDirector {
    public Computer createCompany(IComputerBuilder builder){
        builder.buildMemory();
        builder.buildCpu();
        builder.buildMainboard();
        builder.buildDisk();
        builder.buildPower();
        return builder.createComputer();
    }
}

测试用例:

/*
* 建造者模式的使用场景中的案例
* */
@Test
public void Builder(){
    IComputerBuilder builder=new HighComputerBuilder();
    ComputerDirector director=new ComputerDirector();
    Computer computer=director.createCompany(builder);
    System.out.println(computer.toString());
}

测试结果:

Computer(memory=这个是高配的内存……, cpu=这个是高配的CPU……, mainboard=这个是高配的主板……, disk=这个是高配的硬盘……, power=这个是高配的电源……)

方法评估:

优点:

    • 客户端不必知道产品内部组成的细节,将产品本身与产品的创建过程解耦。
    • 每⼀个具体建造者都相对独⽴,⽽与其他的具体建造者⽆关,更加精细地控制产品的创建过程。
    • 增加新的具体建造者⽆须修改原有类库的代码,符合开闭原则。
    • 建造者模式结合链式编程来使⽤,代码上更加美观。

缺点:

    • 建造者模式所创建的产品⼀般具有较多的共同点,如果产品差异⼤则不建议使⽤。

三、汇总

建造者模式与抽象⼯⼚模式的⽐较:

建造者模式返回⼀个组装好的完整产品 , 抽象⼯⼚模式返回⼀系列相关的产品,这些产品位于不同的产品等级结构,构成了⼀个产品族。

标签:java,Computer,void,建造,模式,computer,Override,设计模式,public
From: https://www.cnblogs.com/q994321263/p/16931120.html

相关文章

  • JavaScript基础2
    今日内容概要BOM操作DOM操作jQuery类库今日内容详细BOM操作window对象BOM(BrowserObjectModel)是指浏览器对象模型它使JavaScript有能力与浏览器进行'对话'W......
  • python之路43 JavaScript语法BOM与DOM jQuery对比
    前戏到目前为止,我们已经学过了JavaScript的一些简单的语法。但是这些简单的语法,并没有和浏览器有任何交互。也就是我们还不能制作一些我们经常看到的网页的一些交互,我们......
  • JavaScript(二)
    ❤️‍JavaScript(二)BOM操作DOM操作jQuery类库❤️‍BOM操作BOM(BrowserobjectModel)是指浏览器对象模型,它的功能就是让javascrip能和浏览器进行“交流对话”;操作浏览器......
  • 设计模式之策略模式
    概述在策略模式中,可以定义一些独立的类来封装不同的算法,每一个类封装一种具体的算法。在这里,每一个封装算法的类都可以称之为一种策略(Strategy),为了保证这些策略在使用时......
  • Java入门 —— JDK安装和配置
    教程中所用到的工具请关注微信公众号:科技前端,回复“工具”即可获得。JDK是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的Java应用程序。JDK是整个Java开发的......
  • JavaScript——BOM操作、DOM操作
    JavaScript——BOM操作、DOM操作一、BOM操作1.1window相关操作/* BOM(BrowserObjectModel)是指浏览器对象模型,它使JavaScript有能力与浏览器进行“对话”*///1、......
  • 五种常见的电子商务模式对比:B2B、B2C、C2B、C2C、O2O
    前言在接触和谈论到电商产品时,我们常常会听到一些专业术语,比如说B2B、B2C等,那么这些术语具体代表什么含义呢?通过收集和整理网络资料以及个人理解,展开说说:(1)B2B模式B2B(B......
  • Java题目集总结6~8
    1.前言:经过这个阶段的学习,我们学习了很多具有拓展性、延申性的知识,需要学习和巩固的知识点也还有很多,此次是最后一次blog总结,但是对我们的Java学习之路来说才刚开始。......
  • idea java 关于mysql数据库连接的相关步骤
    1.首先在你的项目中建立一个lib文件夹(表示加入依赖)(资源在上面)       2.选择这个项目的Properties在下面页面中添加Libraries进入这个项目jar配置到项......
  • java基础之标识符与数据类型
    一标识符1.以字母,下划线,美元符开始。2.不能使用关键字作为变量名与方法名。3.标识符是大小敏感的。二数据类型A.整数类型:1.byte占一个字节其范围为-127——128,超......