实验5:建造者模式

news/2025/1/21 7:20:37/文章来源:https://www.cnblogs.com/yuanxinglan/p/18513689

[实验任务一]:计算机组装

使用建造者模式,完成下述任务:计算机组装工厂可以将CPU、内存、硬盘、主机等硬件设备组装在一起构成计算机,计算机的类型可以是笔记本,也可以是台式机。

实验要求:

1.画出对应的类图;

2.提交源代码;

3.注意编程规范。

1、类图

 

2、源代码

Builder.java

package org.example;

public abstract class Builder {
    Computer computer = new Computer();
    abstract public void buildZhuJi();
    abstract public void buildYinPan();
    abstract public void buildCpu();
    abstract public void buildNeiCun();
    public Computer getCompture()
    {
        return computer;
    }
}

Client.java

package org.example;

public class Client {
    public static void main(String[] args) {
        Builder lap;
        Creator factory=new Creator();
        for (int i = 0; i < 2; i++) {
            if(i==1) {
                System.out.println("笔记本配置如下");
                lap = new LapBuilder();
            }
            else {
                System.out.println("台式机配置如下");
                lap = new TaiShiBuilder();
            }
            factory.setCompture(lap);
            factory.construct();
            System.out.println("CPU:"+lap.getCompture().getCpu());
            System.out.println("内存:"+lap.getCompture().getNeiCun());
            System.out.println("硬盘:"+lap.getCompture().getYinPan());
            System.out.println("主机:"+lap.getCompture().getZhuJi());
        }
    }
}

Computer.java

package org.example;

public class Computer {
    private String cpu;
    private String neiCun;
    private String yinPan;
    private String zhuJi;
    public String getZhuJi() {
        return zhuJi;
    }
    public void setZhuJi(String zhuJi) {
        this.zhuJi = zhuJi;
    }
    public String getYinPan() {
        return yinPan;
    }
    public void setYinPan(String yinPan) {
        this.yinPan = yinPan;
    }
    public String getNeiCun() {
        return neiCun;
    }
    public void setNeiCun(String neiCun) {
        this.neiCun = neiCun;
    }
    public String getCpu() {
        return cpu;
    }
    public void setCpu(String cpu) {
        this.cpu = cpu;
    }
}

Creator.java

package org.example;

public class Creator {
    private Builder comptureKind;
    public void setCompture(Builder kind) {
        this.comptureKind = kind;
    }
    public Computer construct(){
        comptureKind.buildCpu();
        comptureKind.buildYinPan();
        comptureKind.buildZhuJi();
        comptureKind.buildNeiCun();
        return comptureKind.getCompture();
    }
}

LapBuilder.java

package org.example;

public class LapBuilder extends Builder{
    @Override
    public void buildZhuJi() {
        computer.setZhuJi("机械革命");
    }
    @Override
    public void buildYinPan() {
        computer.setYinPan("512G");
    }
    @Override
    public void buildCpu() {
        computer.setCpu("因特尔");
    }
    @Override
    public void buildNeiCun() {
        computer.setNeiCun("16G");
    }
}

TaiShiBuilder.java

package org.example;

public class TaiShiBuilder extends Builder{
    @Override
    public void buildZhuJi() {
        computer.setZhuJi("机械革命");
    }
    @Override
    public void buildYinPan() {
        computer.setYinPan("1T");
    }
    @Override
    public void buildCpu() {
        computer.setCpu("英伟达");
    }
    @Override
    public void buildNeiCun() {
        computer.setNeiCun("16G");
    }
}

 

 

 

 

3、运行截图

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/823745.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

084 全局事件总线1

x应该具备两个能力:1.所有组件都能看到x;2.可以调用$on,$off,$emit 全局事件总线(Global Event Bus)是一种在 Vue 应用中实现组件间通信的技术。它可以用于任意组件之间的通信,包括父子组件、兄弟组件以及跨层级的组件。全局事件总线的核心思想是创建一个独立的事件中心,组…

现在做技术博客还有前途吗?

在数字化时代,技术博客作为一种分享知识、经验和见解的平台,曾经是技术爱好者和专业人士的首选。然而,随着自媒体的兴起和信息孤岛现象的出现,许多人开始质疑技术博客的前途。本文将探讨自媒体对技术博客的影响、自然流量的挑战、维护成本以及技术博客的未来前景。一、自媒…

ABAP Dump:CREATE_OBJECT_CLASS_NOT_FOUND

SAP生产机系统拷贝到测试机后,外部系统访问SAP的WEBSERVICE一直报错。 检查后发现表 VEPGENCLASS 中的服务对应的对象类型与生产机不一样,改成生产机一样,错误消失。

C#05-设计模式学习笔记

@目录1.设计模式的七大原则1.单一职责原则2.迪米特法则3.里氏代换原则4.依赖倒置原则5.接口隔离原则6.开闭原则7.合成复用原则8.总结2.创建型模式1.单例模式2.工厂方法模式1.简单工厂模式2.工厂模式3.抽象工厂模式4.生成器模式5.原型模式3.结构型设计模式1.适配器模式行为型设计…

[Azure] 使用 Cosmos DB for NoSQL 的 API

什么是 Azure Cosmos DB for NoSQL? Azure Cosmos DB for NoSQL 是用于处理文档数据模型的原生非关系服务。它可以使用灵活的架构任意存储原生 JSON 文档。数据会自动编制索引,并可使用专为 JSON 数据设计的 SQL 查询语言进行查询。使用适用于常用框架(如 .NET、Python、Jav…

springboot:调用接口返回的数据乱码解决

从git拉下来项目后,运行服务,启动正常,但是使用swagger和postman调用服务接口出现乱码问题每一个接口返回的数据是乱码,但是控制台打印的日志都是正常的,后续发现数据的返回类型不是常见的application/json,而是application/x-jackson-smile,所以要通过改变数据类型解决…

贝叶斯网络应用在哪些方面

贝叶斯网络是一种强大的统计工具,用于表示随机变量之间的依赖关系。它的应用非常广泛,包括1、医疗诊断和疾病预测;2、风险管理和金融建模;3、机器学习和人工智能。其中,在医疗领域,贝叶斯网络可用于分析疾病的潜在原因,并预测病人的恢复概率。一、医疗诊断和疾病预测疾病…

明火识别检测视频分析服务器烟雾检测识别在企业消防安防场景中的应用

随着科技的不断进步,明火识别检测视频分析服务器在企业消防安防领域扮演着越来越重要的角色。它通过结合人工智能、大数据分析和物联网技术,为火灾预防、检测和响应提供了全新的解决方案。以下是在企业消防安防场景中的一些关键应用,它们展示了如何利用这些先进技术来提升消…

C#01-C#知识点

@目录0.什么是 C#?1.什么是类?2.面向对象编程的主要概念是什么?3.什么是对象?4.什么是构造函数,它有哪些不同的类型?5. C#中的析构函数是什么?6.C# 代码是托管代码还是非托管代码?7.什么是值类型和引用类型?8.什么是命名空间,它是强制性的吗?9.用例子解释 C# 中的注…

Mybatis(管理数据库)

Mybatis(管理数据库) 在配置好环境之后可以通过接口实现对于数据库的各种操作同时在Mapper.xml文件中写好sql语句,对于类存在多个成员需要添加resultMapper注释来提示Mybatis

为什么最近出现了这么多AI收录网站?

在这个信息泛滥的时代,许多人可能会感到困惑:每天都有大量的信息涌入,但如何在其中找到真正有用的内容呢?AI收录网站的出现恰好为我们解决了这个问题。这些网站通过人工智能技术,自动整理、分析和推荐信息,帮助用户高效获取所需内容。无论是学术研究、行业资讯还是日常生…

NFS server

NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁…