实验3 设计模式实验2
创始人
2024-05-29 00:22:54
0

实验内容:
1. 某Web 性能测试软件中包含一个虚拟用户生成器(Virtual User Generator)。
为了避免出现生成的虚拟用户数量不一致,该测试软件在工作时只允许启动唯一
一个虚拟用户生成器。采用单例模式设计该虚拟用户生成器,绘制类图并使用饿
汉式单例、双重检测锁和IoDH 三种方式编程模拟实现。

答(类图):

 饿汉式单例代码:

import java.util.List;
public class VUGenerator {
private static final VUGenerator instance = new VUGenerator();
private VUGenerator() { }
public static VUGenerator getInstance() {
return instance;
}
public List generateVirtualUsers() {
return null;
}
}
public class Client {
public static void main(String[] args) {
VUGenerator gen1, gen2;
gen1 = VUGenerator.getInstance();
gen2 = VUGenerator.getInstance();
System.out.println(gen1==gen2);
}
}

双重检测锁代码: 

import java.util.List;
public class VUGenerator {
private volatile static VUGenerator instance = null;
private VUGenerator() { }
public static VUGenerator getInstance() {
if (instance == null) {
synchronized (VUGenerator.class) {
if (instance == null) {
instance = new VUGenerator();
}
}
}
return instance;
}
public List generateVirtualUsers() {
return null;
}
}
public class Client {
public static void main(String[] args) {
VUGenerator gen1, gen2;
gen1 = VUGenerator.getInstance();
gen2 = VUGenerator.getInstance();
System.out.println(gen1==gen2);
}
}

IoDH 代码: 

import java.util.List;
public class VUGenerator {
private VUGenerator() { }
private static class HolderClass {
private final static VUGenerator instance = new VUGenerator();
}
public static VUGenerator getInstance() {
return HolderClass.instance;
}
public List generateVirtualUsers() {
return null;
}
}
public class Client {
public static void main(String[] args) {
VUGenerator gen1, gen2;
gen1 = VUGenerator.getInstance();
gen2 = VUGenerator.getInstance();
System.out.println(gen1==gen2);
}
}

2. 某OA 系统需要提供一个加密模块,将用户机密信息(例如口令、邮箱等)
加密之后再存储在数据库中,系统已经定义好了数据库操作类。为了提高开发效
率,现需要重用已有的加密算法,这些算法封装在一些由第三方提供的类中,有
些甚至没有源代码。试使用适配器模式设计该加密模块,实现在不修改现有类的
基础上重用第三方加密方法。要求绘制相应的类图并编程模拟实现,需提供对象
适配器和类适配器两套实现方案。

类图(对象适配器)如下所示:

 其中,DataOperator充当目标抽象类角色,CipherAdapter和NewCipherAdapter
充当适配器角色,Caesar 和NewCipher 充当适配者角色。
类适配器设计方案需将上图中的DataOperator 改为接口,且适配器与适配
者之间的关联关系需改为继承关系。

3. 某手机美图APP 软件支持多种不同的图像格式,例如JPG、GIF、BMP
等常用图像格式,同时提供了多种不同的滤镜对图像进行处理,例如木刻滤镜
(Cutout)、模糊滤镜(Blur)、锐化滤镜(Sharpen)、纹理滤镜(Texture)等。现采用桥
接模式设计该APP 软件,使得该软件能够为多种图像格式提供一系列图像处理
滤镜,同时还能够很方便地增加新的图像格式和滤镜,绘制对应的类图并编程模
拟实现。

 4. 某移动社交软件欲增加一个群组(Group)功能。通过设置,用户可以将自
己的动态信息,包括最新动态、新上传的视频以及分享的链接等,分享给某个特
定的成员(Member),也可以分享给某个群组中的所有成员;用户可以将成员添加
至某个指定的群组;此外,还允许用户在一个群组中添加子群组,以便更加灵活
地实现面向特定人群的信息共享。
现采用组合模式设计该群组功能,绘制对应的类图并编程模拟实现。
类图【安全组合模式或透明组合模式均可】:

相关内容

热门资讯

亚运会的英语作文(优质4篇) 亚运会的英语作文 篇一:欢迎亚运会的到来The Arrival of Asian GamesThe ...
英语消防演练告知信范文(优选... 英语消防演练告知信范文 篇一Subject: Fire Drill Exercise – Manda...
勇于放弃的英语作文【通用5篇... 勇于放弃的英语作文 篇一Title: The Courage to Let GoIn life, w...
my dream job英语... my dream job英语作文(通用24篇)  无论是在学校还是在社会中,大家都经常接触到作文吧,...
暑假安排的英语作文(经典3篇... 暑假安排的英语作文 篇一Title: My Exciting Summer Vacation Pla...
家庭英语作文【实用6篇】 家庭英语作文 篇一:我的家庭生活My Family LifeMy family is very im...
英语朗读竞赛作文150字(实... 英语朗读竞赛作文150字 篇一The Importance of English Pronuncia...
包粽子比赛的范文英语【经典6... 篇一:包粽子比赛的范文英语In the traditional Chinese culture, t...
网购英语作文【优秀6篇】 网购英语作文 篇一The Advantages and Disadvantages of Onlin...
学英语写200字作文【精彩6... 学英语写200字作文 篇一:如何提高英语口语能力英语口语是学习英语的重要组成部分,但是很多学生在口语...
有志者事竟成英语作文及译文(... 有志者事竟成英语作文及译文 篇一Title: Where there's a will, there...
感恩节英文作文【精选6篇】 感恩节英文作文 篇一Title: Thanksgiving Day - A Time for Gra...
要强的我作文350字【精选3... 要强的我作文350字 篇一我是一个要强的人,对于自己的要求总是很高,无论是学习还是生活。我相信只有要...
特殊的课堂 Special ... 特殊的课堂 Special classroom 篇一特殊的课堂 Special classroom ...
学习英语的争论高中英语作文【... 学习英语的争论高中英语作文 篇一标题:学习英语的重要性在当今的全球化时代,英语已经成为了一门全球通用...
大学的优秀英语作文带翻译【精... 大学的优秀英语作文带翻译 篇一:大学生应如何充分利用大学资源Title: How College S...
高职单招英语作文范文【经典6... 高职单招英语作文范文 篇一:实施高职单招的优势和挑战In recent years, vocatio...
友谊的英语名言【推荐4篇】 友谊的英语名言 篇一Friendship is a treasure that knows no b...
小学英语句子对话【优秀3篇】 小学英语句子对话 篇一Title: A Day at the ZooIntroduction:One...
英语优秀作文:人与自然(经典... 英语优秀作文:人与自然 篇一The Beauty and Fragility of NatureNa...