设计模式十七.docx

上传人:b****2 文档编号:24502524 上传时间:2023-05-28 格式:DOCX 页数:16 大小:17.80KB
下载 相关 举报
设计模式十七.docx_第1页
第1页 / 共16页
设计模式十七.docx_第2页
第2页 / 共16页
设计模式十七.docx_第3页
第3页 / 共16页
设计模式十七.docx_第4页
第4页 / 共16页
设计模式十七.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

设计模式十七.docx

《设计模式十七.docx》由会员分享,可在线阅读,更多相关《设计模式十七.docx(16页珍藏版)》请在冰豆网上搜索。

设计模式十七.docx

设计模式十七

一.实验目的

1.熟悉UML统一建模语言;

2.回顾熟悉迭代器模式、中介者模式、备忘录模式;

3.熟悉XML文件的操作;

4.熟悉java的反射机制。

二.实验内容

(1)某教务管理系统中一个班级(Class)包含多个学生(Student),使用Java内置迭代器实现对学生信息的遍历,要求按学生年龄由大到小的次序输出学生信息。

用Java实现该过程。

(2)使用中介者模式来说明联合国的作用,要求绘制相应的类图并分析每个类的作用(注:

可以将联合国定义为抽象中介者类,联合国下属机构如WTO、WFC、WHO等作为具体中介者类,国家可以作为抽象同事类,而将中国、美国、日本、英国等国家作为具体同事类)。

(3)改进“用户信息操作撤销”实例,使得系统可以实现多次撤销操作(可以使用集合对象如HashMap、ArrayList等来实现)。

三.实验环境

PC微机;

Windows操作系统;

VisualStudio程序集成环境。

4.实验内容

(1)某教务管理系统中一个班级(Class)包含多个学生(Student),使用Java内置迭代器实现对学生信息的遍历,要求按学生年龄由大到小的次序输出学生信息。

用Java实现该过程。

Student.java

package设计模式实验十七周_1;

publicclassStudentimplementsComparable{

privateStringno;

privateStringname;

privateintage;

privateStringzy;

publicStudent(Stringno,Stringname,intage,Stringzy){

super();

this.no=no;

this.name=name;

this.age=age;

this.zy=zy;

}

//三个返回结果都要写出来

publicintcompareTo(Studento){

if(this.age>o.age){

return-1;

}elseif(this.age

return1;

}else{

return0;

}

}

@Override

publicStringtoString(){

return"姓名:

"+this.name+".编号:

"+this.no+".年龄:

"+this.age

+".专业:

"+this.zy;

}

}

Client.java

package设计模式实验十七周_1;

import

import

import

publicclassClient{

publicstaticvoidmain(String[]args){

Students1=newStudent("291","张一",20,"音乐专业");

Students2=newStudent("423","李红",21,"计算机专业");

Students3=newStudent("211","王文",22,"机械专业");

Students4=newStudent("445","高龙",19,"国贸专业");

Listlist=newArrayList();

list.add(s1);

list.add(s2);

list.add(s3);

list.add(s4);

Collections.sort(list);

System.out.println("按照年龄进行排序输出:

");

for(Studentstu:

list){

System.out.println(stu.toString());

}

}

}

UML.java

运行结果:

(2)使用中介者模式来说明联合国的作用,要求绘制相应的类图并分析每个类的作用(注:

可以将联合国定义为抽象中介者类,联合国下属机构如WTO、WFC、WHO等作为具体中介者类,国家可以作为抽象同事类,而将中国、美国、日本、英国等国家作为具体同事类)。

UN.java

package设计模式实验十七周_2;

import

publicabstractclassUN{

protectedStringname;

protectedHashtablecountry;

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name=name;

}

publicUN(){

this.country=newHashtable();

}

publicvoidAddCountry(Countryco){

if(country==null)

return;

country.put(co.getName(),co);

}

publicvoidDelCountry(Stringco){

if(country==null)

return;

country.remove(co);

}

publicvoidDelCountry(Countryco){

if(country==null)

return;

country.remove(co.getName());

}

protectedvoidSendMessage(Stringfrom,Stringto,Stringmsg){

Countryco=country.get(to);

if(co!

=null)

co.ReceiveMessage(from,msg);

else

System.out.println("对不起!

“"+from+"”不存在,可能还未加入UN!

");

}

publicvoidReceiveMessage(Stringfrom,Stringto,Stringmsg){

SendMessage(from,to,msg);

}

}

Country.java

package设计模式实验十七周_2;

publicabstractclassCountry{

protectedStringname;

protectedUNwto,who,wfc;

publicUNgetWto(){

returnwto;

}

publicvoidsetWto(UNwto){

this.wto=wto;

}

publicUNgetWho(){

returnwho;

}

publicvoidsetWho(UNwho){

this.who=who;

}

publicUNgetWfc(){

returnwfc;

}

publicvoidsetWfc(UNwfc){

this.wfc=wfc;

}

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name=name;

}

publicabstractvoidSendMessageByWTO(Stringcou,Stringmsg);

publicvoidSendMessageByWHO(Stringcou,Stringmsg){

who.SendMessage(this.name,cou,msg);

}

publicvoidSendMessageByWFC(Stringcou,Stringmsg){

wfc.SendMessage(this.name,cou,msg);

}

publicvoidReceiveMessage(Stringcou,Stringmsg){

System.out.println(name+"收到来自"+cou+"的消息:

“"+msg+"”");

}

@Override

publicbooleanequals(Objectco){

Countryc=(Country)co;

if(co==null||this.name==null||c.getName()==null)

returnfalse;

returnname.equals(c.getName());

}

}

WHO.java

package设计模式实验十七周_2;

publicclassWHOextendsUN{

publicWHO()

{

super();

this.name=newString("WHO");

}

}

WFC.java

package设计模式实验十七周_2;

publicclassWFCextendsUN{

publicWFC(){

super();

this.name=newString("WFC");

}

}

WTO.java

package设计模式实验十七周_2;

publicclassWTOextendsUN{

publicWTO(){

super();

this.name=newString("WTO");

}

}

America.java

package设计模式实验十七周_2;

publicclassAmericaextendsCountry{

publicAmerica()

{this.name=newString("America");}

@Override

publicvoidSendMessageByWTO(Stringcou,Stringmsg){

wto.SendMessage(this.name,cou,msg);

}

}

China.java

package设计模式实验十七周_2;

publicclassChinaextendsCountry{

publicChina()

{this.name=newString("China");}

@Override

publicvoidSendMessageByWTO(Stringcou,Stringmsg){

wto.SendMessage(this.name,cou,msg);

}

}

Japan.java

package设计模式实验十七周_2;

publicclassJapanextendsCountry{

publicJapan()

{this.name=newString("Japan");}

@Override

publicvoidSendMessageByWTO(Stringcou,Stringmsg){

wto.SendMessage(this.name,cou,msg);

}

}

Client.java

package设计模式实验十七周_2;

publicclassClient{

publicstaticvoidmain(String[]args){

UN[]un=newUN[3];

//UNwto,who,wfc;

un[0]=newWTO();

un[1]=newWHO();

un[2]=newWFC();

Country[]cou=newCountry[3];

cou[0]=newChina();

cou[1]=newJapan();

cou[2]=newAmerica();

for(inti=0;i

for(intj=0;j

un[i].AddCountry(cou[j]);

for(inti=0;i

{

cou[i].setWfc(un[2]);

cou[i].setWho(un[1]);

cou[i].setWto(un[0]);

}

cou[0].SendMessageByWTO("America","中方坚决反对美方干涉台湾问题");

cou[1].SendMessageByWHO("China","通过WHO....");

cou[2].SendMessageByWFC("China","通过WFC....");

}

}

UML.java

运行结果:

(3)改进“用户信息操作撤销”实例,使得系统可以实现多次撤销操作(可以使用集合对象如HashMap、ArrayList等来实现)。

UserInfoDTO.java

package设计模式实验十七周_3;

publicclassUserInfoDTO

{

privateStringaccount;

privateStringpassword;

privateStringtelNo;

publicStringgetAccount()

{

returnaccount;

}

publicvoidsetAccount(Stringaccount)

{

this.account=account;

}

publicStringgetPassword()

{

returnpassword;

}

publicvoidsetPassword(Stringpassword)

{

this.password=password;

}

publicStringgetTelNo()

{

returntelNo;

}

publicvoidsetTelNo(StringtelNo)

{

this.telNo=telNo;

}

publicMementosaveMemento()

{

returnnewMemento(account,password,telNo);

}

publicvoidrestoreMemento(Mementomemento)

{

this.account=memento.getAccount();

this.password=memento.getPassword();

this.telNo=memento.getTelNo();

}

publicvoidshow()

{

System.out.println("Account:

"+this.account);

System.out.println("Password:

"+this.password);

System.out.println("TelNo:

"+this.telNo);

}

}

Caretaker.java

package设计模式实验十七周_3;

publicclassCaretaker

{

privateMementomemento;

publicMementogetMemento()

{

returnmemento;

}

publicvoidsetMemento(Mementomemento)

{

this.memento=memento;

}

}

Memento.java

package设计模式实验十七周_3;

classMemento

{

privateStringaccount;

privateStringpassword;

privateStringtelNo;

publicMemento(Stringaccount,Stringpassword,StringtelNo)

{

this.account=account;

this.password=password;

this.telNo=telNo;

}

publicStringgetAccount()

{

returnaccount;

}

publicvoidsetAccount(Stringaccount)

{

this.account=account;

}

publicStringgetPassword()

{

returnpassword;

}

publicvoidsetPassword(Stringpassword)

{

this.password=password;

}

publicStringgetTelNo()

{

returntelNo;

}

publicvoidsetTelNo(StringtelNo)

{

this.telNo=telNo;

}

}

Client.java

package设计模式实验十七周_3;

import设计模式实验十七周_3.UserInfoDTO;

import设计模式实验十七周_3.Caretaker;

publicclassClient

{

publicstaticvoidmain(Stringa[])

{

UserInfoDTOuser=newUserInfoDTO();

Caretakerc=newCaretaker();

Caretakerd=newCaretaker();

user.setAccount("zhangsan");

user.setPassword("123456");

user.setTelNo();

System.out.println("状态一:

");

user.show();

c.setMemento(user.saveMemento());//保存备忘录

System.out.println("---------------------------");

user.setPassword("111111");

user.setTelNo();

System.out.println("状态二:

");

user.show();

d.setMemento(user.saveMemento());//保存备忘录

System.out.println("---------------------------");

user.setPassword("222222");

user.setTelNo();

System.out.println("状态三:

");

user.show();

System.out.println("---------------------------");

user.restoreMemento(d.getMemento());//从备忘录中恢复

System.out.println("回到状态二:

");

user.show();

System.out.println("---------------------------");

user.restoreMemento(c.getMemento());//从备忘录中恢复

System.out.println("回到状态一:

");

user.show();

System.out.println("---------------------------");

}

}

UML.java

运行结果:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1