第7次实验--建造者设计与原型设计模式.doc
《第7次实验--建造者设计与原型设计模式.doc》由会员分享,可在线阅读,更多相关《第7次实验--建造者设计与原型设计模式.doc(5页珍藏版)》请在冰点文库上搜索。
实验目的:
加深对建造者设计模式\原型设计及创建型设计模式原理的理解
实验环境:
C#.Net/VC++.Net或MyEclipse(Java)等
实验内容:
某数据处理软件要增加一个图表复制功能,在图表对象中包含一个数据集对象,用于封闭待显示的数据,可以通过界面的“复制”按钮将该图表复制一份,复制后可以得到新的图表对象,用户可以修改新图表的编号、颜色和数据。
现要求使用原型设计模式设计该软件。
实验过程:
1、、画出UML类图
2、实现代码
packageedu.fjnu.chart;
publicclassChartimplementsCloneable{
privateStringid;
privateStringcolour;
privateDatadata;
publicChart(Stringid,Stringcolour,Datadata){
this.setId(id);
this.setColour(colour);
this.setData(data);
}
publicStringgetId(){
returnid;
}
publicvoidsetId(Stringid){
this.id=id;
}
publicStringgetColour(){
returncolour;
}
publicvoidsetColour(Stringcolour){
this.colour=colour;
}
publicDatagetData(){
returndata;
}
publicvoidsetData(Datadata){
this.data=data;
}
publicChartclone(){
Chartcus=null;
try{
cus=(Chart)super.clone();
}catch(CloneNotSupportedExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
returncus;
}
publicvoidshow(){
System.out.println("id:
"+getId()+"colour:
"+getColour());
getData().showData();
}
}
packageedu.fjnu.chart;
publicclassData{
privateStringdataA;
privateStringdataB;
privateStringdataC;
publicData(StringdataA,StringdataB,StringdataC){
this.setDataA(dataA);
this.setDataB(dataB);
this.setDataC(dataC);
}
publicStringgetDataA(){
returndataA;
}
publicvoidsetDataA(StringdataA){
this.dataA=dataA;
}
publicStringgetDataB(){
returndataB;
}
publicvoidsetDataB(StringdataB){
this.dataB=dataB;
}
publicStringgetDataC(){
returndataC;
}
publicvoidsetDataC(StringdataC){
this.dataC=dataC;
}
publicvoidshowData(){
System.out.println("Data:
");
System.out.println("DataA:
"+getDataA());
System.out.println("DataB:
"+getDataB());
System.out.println("DataC:
"+getDataC());
}
}
packageedu.fjnu.chart;
publicclassClient{
publicstaticvoidmain(String[]args){
Datadata=newData("1111","2222","3333");
Chartchart1=newChart("01","红色",data);
Chartchart2=chart1.clone();
chart2.setColour("蓝色");
chart2.setId("02");
chart1.show();
System.out.println("~~~~~~~~~~~~~~~");
chart2.show();
System.out.println("~~~~~~~~~~~~~~~");
System.out.println(chart1.equals(chart2));
System.out.println(chart1.getData().equals(chart2.getData()));
}
}
3、实验结果