软件体系结构与设计模式实验9实验报告1、某系统提供了一个数据加密功能,可以对字符串进行加密。最简单的加密算法通过对字母进行移位来实现,同时还提供了稍复杂的逆向输出加密,还提供了更为高级的求模加密。用户先使用最简单的加密算法对字符串进行加密,如果觉得还不够可以对加密之后的结果使用其他加密算法进行二次加密,当然也可以进行第三次加密。现使用装饰模式设计该多重加密系统。(1)UML类图(2)实现代码packagequestion1;/***@Description:*@Author:Xxx*@Date:2020年5月10日**/publicinterfaceCipher{Stringencrypt(StringplainText);}packagequestion1;/***@Description:*@Author:Xxx*@Date:2020年5月10日**/publicclassSimpleCipherimplementsCipher{@OverridepublicStringencrypt(StringplainText){Stringstr="";for(inti=0;i
='a'&&c<='z'){c+=6;if(c>'z'){c-=26;}if(c<'a'){c+=26;}}if(c>='A'&&c<='Z'){c+=6;if(c>'Z'){c-=26;}if(c<'A'){c+=26;}}str+=c;}returnstr;}}packagequestion1;/***@Description:*@Author:Xxx*@Date:2020年5月10日**/publicclassCipherDecoratorimplementsCipher{privateCiphercipher;publicCipherDecorator(Ciphercipher){this.cipher=cipher;}@OverridepublicStringencrypt(StringplainText){returncipher.encrypt(plainText);}}packagequestion1;importjava.time.format.ResolverStyle;/***@Description:*@Author:Xxx*@Date:2020年5月10日**/publicclassComplexCipherextendsCipherDecorator{publicComplexCipher(Ciphercipher){super(cipher);}publicStringreverse(Stringtext){Stringstring="";for(inti=text.length();i>0;i--){string+=text.substring(i-1,i);}returnstring;}@OverridepublicStringencrypt(StringplainText){Stringresult=super.encrypt(plainText);result=reverse(result);returnresult;}}packagequestion1;/***@Description:*@Author:Xxx*@Date:2020年5月10日**/publicclassAdvancedCipherextendsCipherDecorator{publicAdvancedCipher(Ciphercipher){super(cipher);}publicStringmod(Stringtext){Stringstr="";for(inti=0;iflyweights=newHashMap<>();publicFlyweightgetFlyweight(Stringkey){if(!flyweights.containsKey(key)){Flyweightflyweight=newConcre...