当前位置: 首页 > news >正文

10.30 实验三工厂模式 实验四抽象工厂

实验3:工厂方法模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解工厂方法模式的动机,掌握该模式的结构;
2、能够利用工厂方法模式解决实际问题。

[实验任务一]:加密算法
目前常用的加密算法有DES(Data Encryption Standard)和IDEA(International Data Encryption Algorithm)国际数据加密算法等,请用工厂方法实现加密算法系统。
实验要求:
1.画出对应的类图;
2.提交该系统的代码,该系统务必是一个可以能够直接使用的系统,查阅资料完成相应加密算法的实现;
3.注意编程规范。

实验4:抽象工厂模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解抽象工厂模式的动机,掌握该模式的结构;
2、能够利用抽象工厂模式解决实际问题。

[实验任务一]:人与肤色
使用抽象工厂模式,完成下述产品等级结构:

实验要求:
1.画出对应的类图;
2.提交源代码;
3.注意编程规范。

image
image

Skin.java
public interface Skin {

String getColor();}

YellowSkin.java
java
public class YellowSkin implements Skin {
@Override
public String getColor() {
return "黄色";
}}
BlackSkin.java
public class BlackSkin implements Skin {
@Override
public String getColor() {
return "黑色";
}}
WhiteSkin.java
public class WhiteSkin implements Skin {
@Override
public String getColor() {
return "白色";
}}
Person.java
public abstract class Person {
// 依赖肤色对象(组合关系)
protected Skin skin;

/*** 构造方法:初始化肤色* @param skin 肤色对象*/
public Person(Skin skin) {this.skin = skin;
}/*** 展示人的信息(性别+肤色)*/
public abstract void showInfo();}

MalePerson.java
public class MalePerson extends Person {
public MalePerson(Skin skin) {
super(skin);
}

@Override
public void showInfo() {System.out.println("性别:男,肤色:" + skin.getColor());
}}

FemalePerson.java
jpublic class FemalePerson extends Person {
public FemalePerson(Skin skin) {
super(skin);
}

@Override
public void showInfo() {System.out.println("性别:女,肤色:" + skin.getColor());
}}

PersonFactory.java
public abstract class PersonFactory {
public abstract Person createPerson(Skin skin);}
MaleFactory.java
public class MaleFactory extends PersonFactory {
@Override
public Person createPerson(Skin skin) {
return new MalePerson(skin);
}}
FemaleFactory.java
public class FemaleFactory extends PersonFactory {
@Override
public Person createPerson(Skin skin) {
return new FemalePerson(skin);
}}
Client.java
import java.util.Scanner;
public class Client {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
PersonFactory factory = null;
Skin skin = null;

    // 1. 选择性别(确定工厂)System.out.println("请选择性别:");System.out.println("1. 男");System.out.println("2. 女");int genderChoice = scanner.nextInt();scanner.nextLine(); // 吸收换行符switch (genderChoice) {case 1:factory = new MaleFactory();break;case 2:factory = new FemaleFactory();break;default:System.out.println("无效选择,默认创建男性");factory = new MaleFactory();}// 2. 选择肤色(确定产品等级)System.out.println("请选择肤色:");System.out.println("1. 黄色");System.out.println("2. 黑色");System.out.println("3. 白色");int skinChoice = scanner.nextInt();switch (skinChoice) {case 1:skin = new YellowSkin();break;case 2:skin = new BlackSkin();break;case 3:skin = new WhiteSkin();break;default:System.out.println("无效选择,默认使用黄色皮肤");skin = new YellowSkin();}// 3. 创建人实例并展示信息Person person = factory.createPerson(skin);System.out.println("创建结果:");person.showInfo();scanner.close();
}}
http://www.jsqmd.com/news/186948/

相关文章:

  • 【高效开发必备】:掌握这3种cxx-qt配置方案,提升项目启动效率80%
  • WPF 自定义控件学习三,自定义命令控件(TreeView)
  • 基于YOLOv8的安全锥识别检测系统(YOLOv8深度学习+YOLO数据集+UI界面+Python项目源码+模型)
  • 神经网络前向传播:从理论到实现一个迷你框架的深度剖析
  • 人物IP定制不再难:基于lora-scripts的LoRA图像生成实战指南
  • LLaMA-3推理延迟高?你必须知道的5个C++级优化黑科技,90%的人忽略了第3个
  • Envoy高性能代理拦截lora-scripts服务间通信实现熔断限流
  • rkt CoreOS容器引擎替代方案尝试运行lora-scripts
  • SaltStack远程执行命令实时调整lora-scripts运行参数
  • Ansible YAML剧本批量部署lora-scripts到数百台机器
  • 【游戏物理引擎避坑指南】:3年项目验证的7种稳定性增强技巧
  • Pulumi使用Python等通用语言编程部署lora-scripts架构
  • 【行业机密】C++优化LLaMA-3推理的3种稀缺方案:GPU+CPU协同加速实测曝光
  • 自动化标注+训练一体化:lora-scripts提升LoRA建模整体效率
  • Cloudflare 部署静态页面报错的解决方法✘ [ERROR] Missing entry-point to Worker script or to assets directory
  • Nacos阿里巴巴开源平台统一管理lora-scripts配置与服务
  • 刚体碰撞抖动频发?,深度剖析C++物理引擎稳定性底层机制
  • Packer自动化构建包含lora-scripts的黄金镜像模板
  • 467532
  • HAProxy传统负载均衡器支撑lora-scripts高并发访问流量
  • C++物理引擎数值稳定性实战(从崩溃到毫秒级精准模拟)
  • 揭秘cxx-qt环境配置难题:5步实现Qt与C++无缝集成
  • Airtable自定义数据库管理lora-scripts客户与订单信息
  • GitLab CI/CD配置自动化测试lora-scripts每次代码提交
  • Terraform声明式编码创建lora-scripts所需云资源
  • Linkerd轻量级sidecar代理监控lora-scripts服务调用延迟
  • Vagrant快速分发lora-scripts开发环境给新成员
  • C++高性能游戏渲染优化实践(减少CPU-GPU等待时间的4种方法)
  • 67452
  • Reddit论坛发帖讨论lora-scripts在AI艺术领域的未来发展方向