实验4:抽象工厂模式

news/2025/1/24 8:37:28/文章来源:https://www.cnblogs.com/yuanxinglan/p/18509583

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、理解抽象工厂模式的动机,掌握该模式的结构;

2、能够利用抽象工厂模式解决实际问题

 

[实验任务一]:人与肤色

使用抽象工厂模式,完成下述产品等级结构:

 

实验要求:

1.画出对应的类图;

2.提交源代码;

3.注意编程规范。

1、类图

 

 

2、源代码

AbstractFactory.java

package org.example;

 

public interface AbstractFactory {

    public Man produceMan();

    public Woman produceWoman();

}

 

YellowFactory.java

package org.example;

 

public class YellowFactory implements AbstractFactory{

    public Man produceMan()

    {

        return new YellowMan();

    }

    public Woman produceWoman()

    {

        return new YellowWoman();

    }

}

BlackFactory.java

package org.example;

 

public class BlackFactory implements AbstractFactory{

    public Man produceMan()

    {

        return new BlackMan();

    }

    public Woman produceWoman()

    {

        return new BlackWoman();

    }

}

WhiteFactory.java

package org.example;

 

public class WhiteFactory implements AbstractFactory{
    public Man produceMan()
    {
        return new WhiteMan();
    }
    public Woman produceWoman()
    {
        return new Woman() {
            @Override
            public void show() {

            }
        };
    }
}

Man.java

package org.example;

 

public interface Man {

    public void show();

}

Woman.java

package org.example;

 

public interface Woman {

    public void show();

}

YellowMan.java

package org.example;

 

public class YellowMan implements Man{

    public void show()

    {

        System.out.println("黄皮肤的男性");

    }

}

BlackMan.java

package org.example;

 

public class BlackMan implements Man{

    public void show()

    {

        System.out.println("黑皮肤的男性");

    }

}

WhiteMan.java

package org.example;

 

public class WhiteMan implements Man{

    public void show()

    {

        System.out.println("白皮肤的男性");

    }

}

YellowWoman.java

package org.example;

 

public class YellowWoman implements Woman {

    public void show()

    {

        System.out.println("黄皮肤的女性");

    }

}

BlackWoman.java

package org.example;

 

public class BlackWoman implements Woman {

    public void show()

    {

        System.out.println("黑皮肤的女性");

    }

}

WhiteWoman.java

package org.example;

 

public class WhiteWoman implements Woman {

    public void show()

    {

        System.out.println("白皮肤的女性");

    }

}

Main.java

package org.example;

 

public class main {

    public static void main(String args[])

    {

        try

        {

            AbstractFactory fac;

            Man m;

            Woman w;

            fac=new WhiteFactory();

            m=fac.produceMan();

            m.show();

            w=fac.produceWoman();

            w.show();

        }

        catch(Exception e)

        {

            System.out.println(e.getMessage());

        }

    }

}

 

 

 

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

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

相关文章

PromptKD:视觉语言模型的无监督提示提取

PromptKD:视觉语言模型的无监督提示提取快速学习已成为增强视觉语言模型(VLM)的一种有价值的技术,例如用于特定领域下游任务的CLIP。现有的工作主要集中在设计各种学习形式的提示,忽视了提示作为从大型教师模型中学习的有效蒸馏器的潜力。介绍了一种无监督的领域提示蒸馏框…

el-image图片预览显示bug

原本代码 <el-table-column label="附件" width="120"><template #default="scope"><el-imagev-if="scope.row.attachmentUrl":src="scope.row.attachmentUrl":preview-src-list="[scope.row.attachmen…

《HelloGitHub》第 103 期

兴趣是最好的老师,HelloGitHub 让你对编程感兴趣!简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。github.com/521xueweihan/HelloGitHub这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、Java、Go、C/C++、Swift...让你在短…

.NET使用Moq开源模拟库简化单元测试

前言 今天大姚给大家推荐一个.NET开源、流行、使用简单的.NET模拟库:Moq。 Moq类库介绍 Moq是一个.NET开源、流行、使用简单的 .NET 模拟库,充分利用了.NET 的 Linq 表达式树和 lambda 表达式。这使得 Moq 成为最具生产力、类型安全且支持重构的模拟库。它不仅支持模拟接口,…

Codeforces Global Round 27 div1+2 个人题解(A~E)

Codeforces Global Round 27 div1+2 个人题解(A~E) Dashboard - Codeforces Global Round 27 - Codeforces 火车头 #define _CRT_SECURE_NO_WARNINGS 1#include <algorithm> #include <array> #include <bitset> #include <cassert> #include <cmat…

2024.10.22(周二)

[实验任务一]:女娲造人使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参数W,则返回一个Woman对象,如果传入参数R,则返回一个Robot对象。请用程序设计实现上述场景。实验要求:1.画出对应的类图;2.提交源代码;3.注意编程规范。…

实验3 c语言函数应用编程

task1:1 #include<stdio.h>2 3 char score_to_grade(int score);4 5 int main() {6 int score;7 char grade;8 9 while (scanf_s("%d",&score) != EOF) { 10 grade = score_to_grade(score); 11 printf("分数:%d,等级:%c…

JMeter JMeter-pugin-rabbitMQ消息发布插件

开发环境 RabbitMQ 3.9.16 Erlang 23.3.4.11 Apache-jmeter-5.3 Apache Maven 3.5.4 JDK 1.8.0_121 插件下载地址 https://gitee.com/ishouke/jmeter-plugin-rabbitmq/tree/master 插件使用方法 插件配置 将插件及依赖类库目录下的所有.jar 文件放到 %JMETER_HOME\lib\ext目录…

读数据工程之道:设计和构建健壮的数据系统22获取阶段考虑因素

获取阶段考虑因素1. 有边界与无边界数据 1.1. 无边界数据是现实中存在的数据,是事件发生时的数据,要么是间断的,要么是连续的、持续的和流动的 1.2. 有边界数据是跨越某种边界(如时间)对数据进行归类的一种便捷方式1.2.1. 所有的数据在有边界之前都是无边界的1.3. 长期以来…

mobian trixie 安装 docker

手机刷了 mobian 想安装 docker,记录安装过程中的一些问题 1. 更新软件包列表 sudo apt-get update2. 安装依赖包 sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release3. 添加 Docker 的官方GPG密钥 curl -fsSL https://download.docker.com/linux/…

龙哥盟-PMP-课程笔记-三-

龙哥盟 PMP 课程笔记(三) 2024PMP认证考试课程(第六版+敏捷+第七版) - P6:2.1-2.3 组织过程资产 - 慧翔天地PMP课堂 - BV1By411b7qM 运行环境阶段的课程吧。轻松加愉快,基本上听一听,没什么需要去背的东西,就这么三大块,事业环境因素和组织过程资产,然后呢说了一个组…