软件测试与体系结构报告Word格式.docx
《软件测试与体系结构报告Word格式.docx》由会员分享,可在线阅读,更多相关《软件测试与体系结构报告Word格式.docx(38页珍藏版)》请在冰点文库上搜索。
已创建一个女性角色!
"
);
}
}
man.java
publicclassmanextendsSimpleFactory{
已创建一个男性角色!
Person.java
importjava.util.Scanner;
publicclassPerson{
publicstaticvoidmain(Stringargs[]){
Scannerreader=newScanner(System.in);
System.out.println("
请输入你要创建的角色(“汉子”、“妹子”或“随便”):
Strings=reader.next();
reader.close();
if(s.equals("
汉子"
)){
manmen=newman();
men.CreateCharator();
elseif(s.equals("
妹子"
womenwm=newwomen();
wm.CreateCharator();
随便"
intn=(int)((Math.random()*10)%2);
if(n==0){
manmen=newman();
men.CreateCharator();
}
else{
womenwm=newwomen();
wm.CreateCharator();
SimpleFactory.java
publicabstractclassSimpleFactory{
abstractvoidCreateCharator();
1.1.3UML
1.2工厂模式
1.2.1要求
设计一个游戏职业的构造器,可以为用户构造不同的职业
职业有,建筑师、魔法师、医师、金工技师、厨师。
请根据用户传递的角色职业信息和姓名,为用户生成不同的职业
1.2.2代码
metalworkingTechnicians.java
publicclassmetalworkingTechniciansextendsGame{
voidbuild(){
已创建一个金工技师角色!
名字为:
+name);
magician.java
publicclassmagicianextendsGame{
已创建一个魔法师角色!
名字为:
Game.java
publicabstractclassGame{
Stringname;
abstractvoidbuild();
architect.java
publicclassarchitectextendsGame{
已创建一个建筑师角色!
cook.java
publicclasscookextendsGame{
已创建一个厨师角色!
doctor.java
publicclassdoctorextendsGame{
已创建一个医生角色!
Factory.java
publicclassFactory{
请选择要创建的角色:
1、建筑师2、魔法师3、医师4、金工技师5、厨师"
inti;
Scannerreader=newScanner(System.in);
i=reader.nextInt();
if(i==1){
architectmyarchitect=newarchitect();
System.out.print("
请输入角色名字:
myarchitect.name=reader.next();
myarchitect.build();
elseif(i==2){
magicianmymagician=newmagician();
mymagician.name=reader.next();
mymagician.build();
elseif(i==3){
doctormydoctor=newdoctor();
mydoctor.name=reader.next();
mydoctor.build();
elseif(i==4){
metalworkingTechniciansmymetalworkingTechnicians=newmetalworkingTechnicians();
mymetalworkingTechnicians.name=reader.next();
mymetalworkingTechnicians.build();
elseif(i==5){
cookmycook=newcook();
mycook.name=reader.next();
mycook.build();
System.out.println("
创建失败!
reader.close();
1.2.3UML
1.3抽象工厂模式
1.3.1要求
为游戏人物创建不同的外观
分为:
服饰、头发、眼镜、肤色、身高
要求不同的职业有不同的外观范围,同一职业外观相同。
也可以设计成不同职业不同外观,同一职业根据等级不同,外观也有细微差异(如头发长短、瞳孔颜色深浅、身高高矮、服饰配饰多少的差异等等)
1.3.2代码
clothes.java
publicinterfaceclothes{
voidClothestype();
cookBuild.java
publicclasscookBuildextendsFactoryimplementsclothes,eye,hair,skin,height{
publicvoidClothestype(){
Clothestype="
厨师服"
;
publicvoidEyecolor(){
Eyecolor="
黑色眼睛"
publicvoidHaircolor(){
Haircolor="
黑色头发"
publicvoidSkincolor(){
Skincolor="
黄色皮肤"
publicvoidHeightcolor(){
Heightcolor="
身高177cm"
voidCreateClothes(){
System.out.println("
已创建厨师角色!
System.out.print(Clothestype+'
\t'
voidCreateHair(){
System.out.print(Haircolor+'
voidCreateEye(){
System.out.print(Eyecolor+'
voidCreateSkin(){
System.out.print(Skincolor+'
voidCreateHeight(){
System.out.print(Heightcolor+'
}
doctorBuild.java
publicclassdoctorBuildextendsFactoryimplementsclothes,eye,hair,skin,height{
医生服"
蓝色眼睛"
棕色头发"
白色皮肤"
身高180cm"
eye.java
publicinterfaceeye{
voidEyecolor();
publicabstractclassFactory{
StringClothestype;
StringEyecolor;
StringHaircolor;
StringSkincolor;
StringHeightcolor;
abstractvoidCreateClothes();
abstractvoidCreateHair();
abstractvoidCreateEye();
abstractvoidCreateSkin();
abstractvoidCreateHeight();
hair.java
publicinterfacehair{
voidHaircolor();
height.java
publicinterfaceheight{
voidHeightcolor();
shixian.java
publicclassshixian{
请选择要选择的角色:
1、厨师2、医生"
inti=reader.nextInt();
if(i==1){
cookBuildcook=newcookBuild();
cook.Clothestype();
cook.Eyecolor();
cook.Haircolor();
cook.Skincolor();
cook.Heightcolor();
cook.CreateClothes();
cook.CreateHair();
cook.CreateEye();
cook.CreateSkin();
cook.CreateHeight();
elseif(i==2){
doctorBuilddoctor=newdoctorBuild();
doctor.Clothestype();
doctor.Eyecolor();
doctor.Haircolor();
doctor.Skincolor();
doctor.Heightcolor();
doctor.CreateClothes();
doctor.CreateHair();
doctor.CreateEye();
doctor.CreateSkin();
doctor.CreateHeight();
请输入正确的序号"
skin.java
publicinterfaceskin{
voidSkincolor();
1.3.3UML
第2章设计模式
2.1单例模式
2.1.1要求
学号是我们每个同学的唯一标示,要求同学们在入学的时候就分配学号,在随后的学习生活中,不允许分配学号,只能使用该学号,例如办理图书证,办理饭卡,选课等活动。
要求采用该机制,实现学号的单例
2.1.2代码
publicclassStudentCard{
Stringstr;
privatestaticStudentCardstucard=null;
privateStudentCard(){
publicsynchronizedvoidsetStudentCardNo(Stringstr1){
str=str1;
卡号:
+str);
publicStringgetStudentCardNo(){
returnstr;
publicvoidusecard(Stringstr2){
if(str2.equals("
借书"
)){
System.out.println();
现在执行借书功能,请按要求操作。
注意:
一次最多只能借20本书,工具书不外借,借书日期为60天,到期可以续借。
选课"
现在执行选课功能,请安要求操作。
选修课最多只能选3门,多选或错选的课程将会被系统清理。
充卡"
现在执行充卡功能,请安要求操作。
请保管好自己的饭卡,如果丢失请立即挂失,以免不必要的损失。
publicstaticStudentCardgetStuCard(){
if(stucard==null){
stucard=newStudentCard();
stucard.setStudentCardNo("
201213040324姓名:
杨鹤学院:
信息科学与技术学院专业:
软件工程"
returnstucard;
Main
Test.java
publicclasstest{
publicstaticvoidmain(Stringargs[]){
StudentCardcard1=StudentCard.getStuCard();
card1.usecard("
2.1.3UML
2.2生成器模式
2.2.1要求
KFC点餐
足球教练:
在一场足球比赛中有各种的布阵方法(442,4231,433…);
教练在开场比赛之前确定阵型,比赛中可以随时暂停更换队形;
当有新队型产生的时候,可以很容易让教练学会新的队形并使用。
2.2.2代码
packageKFC;
publicclassMeal{
Stringfood;
Stringdrink;
voidsetFood(Stringfood){
this.food=food;
voidsetDrink(Stringdrink){
this.drink=drink;
StringgetFood(){
returnfood;
StringgetDrink(){
returndrink;
publicabstractclassMealBuilder{
Mealmeal=newMeal();
abstractvoidbuildFood();
abstractvoidbuildDrink();
MealgetMeal(){
returnmeal;
publicclasssubMealBuilderAextendsMealBuilder{
voidbuildFood(){
meal.setFood("
A,food"
voidbuildDrink(){
meal.setDrink("
A.drink"
publicclasssubMealBuilderBextendsMealBuilder{
B.food"
B.drink"
publicclassWaiter{
MealBuildermb;
voidsetMealBuilder(MealBuildermb){
this.mb=mb;
Mealconstruct(){
mb.buildDrink();
mb.buildFood();
returnmb.getMeal();
MealBuilders;
Waiterwaiter=newWaiter();
选择套餐类型:
A或B"
Stringtype=reader.next();
if(type.equals("
A"
)||type.equals("
a"
s=newsubMealBuilderA();
s=newsubMealBuilderB();
waiter.setMealBuilder(s);
System.out.println(waiter.construct().getDrink()+'
+waiter.construct().getFood());