首页 > 其他分享 >工厂方法模式

工厂方法模式

时间:2024-12-29 20:31:38浏览次数:6  
标签:Arrays 方法 algorithmType 模式 工厂 org byte data public

目前常用的加密算法有DES(Data Encryption Standard)和IDEA(International Data Encryption Algorithm)国际数据加密算法等,请用工厂方法实现加密算法系统。

实验要求:

1.画出对应的类图;

2.提交该系统的代码,该系统务必是一个可以能够直接使用的系统,查阅资料完成相应加密算法的实现;

3.注意编程规范。

1.类图

 

2. 系统代码

package org.example;

public interface EncryptionAlgorithm {
    byte[] encrypt(byte[] data);
}

package org.example;

import java.util.Arrays;

public class DESAlgorithm implements EncryptionAlgorithm {
    @Override
    public byte[] encrypt(byte[] data) {
        // 实现DES加密逻辑
        return Arrays.copyOfRange(data, 0, data.length);
    }
}

package org.example;

import java.util.Arrays;

public class IDEAAlgorithm implements EncryptionAlgorithm {
    @Override
    public byte[] encrypt(byte[] data) {
        // 实现IDEA加密逻辑
        return Arrays.copyOfRange(data, 0, data.length);
    }
}

package org.example;

public class EncryptionAlgorithmFactory {
    public static EncryptionAlgorithm getEncryptionAlgorithm(String algorithmType) {
        if ("DES".equalsIgnoreCase(algorithmType)) {
            return new DESAlgorithm();
        } else if ("IDEA".equalsIgnoreCase(algorithmType)) {
            return new IDEAAlgorithm();
        } else {
            throw new IllegalArgumentException("Unsupported algorithm type: " + algorithmType);
        }
    }
}

package org.example;

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        String algorithmType = "DES"; // 或者 "IDEA"
        EncryptionAlgorithm encryptionAlgorithm = EncryptionAlgorithmFactory.getEncryptionAlgorithm(algorithmType);

        byte[] data = "Hello, World!".getBytes();
        byte[] encryptedData = encryptionAlgorithm.encrypt(data);

        System.out.println("Encrypted Data: " + Arrays.toString(encryptedData));

    }
}

标签:Arrays,方法,algorithmType,模式,工厂,org,byte,data,public
From: https://www.cnblogs.com/pinganxile/p/18639500

相关文章

  • 抽象工厂模式
    使用抽象工厂模式,完成下述产品等级结构:  1. 画出对应的类图;   2. 提交源代码;publicinterfaceSkin{    voidshow();}publicinterfaceGender{    voidshow();}publicinterfaceHumanFactory{    SkincreateSkin();    GendercreateG......
  • 建造者模式
    [实验任务一]:计算机组装使用建造者模式,完成下述任务:计算机组装工厂可以将CPU、内存、硬盘、主机等硬件设备组装在一起构成计算机,计算机的类型可以是笔记本,也可以是台式机。  源代码:interfaceBuilder{    voidsetCPU(Stringcpu);    voidsetRam(intram);  ......
  • 原型模式
    [实验任务一]:向量的原型用C++完成数学中向量的封装,其中,用指针和动态申请支持向量长度的改变,使用浅克隆和深克隆复制向量类,比较这两种克隆方式的异同。  #include<iostream>#include<stdexcept> classVector{private:    int*elements;//指向向量元素的指针......
  • redis-2(集群模式)
    主从模式(master-slave)实战规划图实际配置1,克隆主机,以redis1为基础,克隆出redis2和32,配置IP和主机名称,重启,使用xshell链接vi/etc/sysconfig/network-scripts/ifcfg-ens33:1521->22vi/etc/hostname:1redis2reboot重启使用xshell或者finalShell链接......
  • Python里的pandas库append 方法的替代实现方法
    使用 concat 函数concat 函数可以将多个 DataFrame 连接在一起,通过这种方式可以实现类似 append 的功能。importpandasaspd#创建示例DataFramedf=pd.DataFrame({'col1':[1,2],'col2':[3,4]})#创建要添加的新行,以DataFrame形式new_row=pd.DataF......
  • Java难绷细节02---抽象类中只能有抽象方法吗以及有关抽象类的细节探讨
    Java难绷细节02---抽象类中只能有抽象方法吗以及有关抽象类的细节探讨标题长的像轻小说首先回答标题抛出的问题——False显然,有抽象方法的类是抽象类,但是,抽象类中只能有抽象方法吗?抽象类可以包含抽象方法,也可以包含具体方法如果一个类包含至少一个抽象方法,用abstract关键字修......
  • 微服务架构设计模式PDF免费下载
    适读人群:本书的重点是架构和开发,适合负责开发和交付软件的任何人(例如开发人员、架构师、CTO等)阅读。示例代码使用Java语言和Spring框架世界十大软件架构师之一、微服务架构先驱者亲笔撰写,微服务实用落地指南。示例代码使用Java编程和Spring框架电子版仅供预览,下载后24小时内......
  • 设计模式-工厂和单例模式
    概念和作用分类7大原则工厂模式概念工厂模式是创建型模式,它是对象创建的最佳方案,特别是创建对象过程比较复杂。(如果理解new对象就可以完成功能,不需要用工厂模式)。好处实现对象的创建和使用的解耦。分类简单工厂模式简单工厂模式简介也叫静态工厂模式,可以根据不参数......
  • 从家谱的层级结构 - 组合模式(Composite Pattern)
    组合模式(CompositePattern)组合模式(CompositePattern)组合模式概述组合模式涉及的角色talkischeap,showyoumycode总结组合模式(CompositePattern)组合模式(CompositePattern)是一种结构型设计模式,它允许你将对象组合成树形结构来表示“部分-整体”的层次关系。组......
  • 【Java基础-28】访问修饰符对方法重写的影响:深入解析与最佳实践
    在Java中,方法重写(MethodOverriding)是实现多态性的核心机制之一。通过方法重写,子类可以提供与父类中同名方法的具体实现,从而定制或扩展父类的行为。然而,在方法重写的过程中,访问修饰符(AccessModifiers)的选择对方法的可见性和行为有着重要影响。本文将深入探讨访问修饰符对方......