预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

JAVA设计模式实验报告 --------基于生成器模式的日历牌程序 学号: 姓名: 一:设计要求 中国的日历牌是每个星期的第一天是星期一,最后一天是星期日,欧美的日历牌是每个星期的第一天是星期日,最后一天是星期六.要求使用生成器模式为用户提供中国式和欧美式的日历牌. 二:试验环境 Pc一台,windowsxp操作系统,jdk1.6环境,myeclipes软件 三:设计实现: 类图如下所示: 关键代码及注释: Director.java publicclassDirector{//指挥者角色类 privateBuilderbuilder; intyear,month;//定义年月 Director(Builderbuilder,intyear,intmonth){ this.builder=builder; this.year=year; this.month=month; } publicvoidconstructProduct(){ booleanok=false; ok=builder.buildWeekTitle(); if(ok){ ok=builder.buildCalendar(year,month); } if(ok){ builder.buildTitle(); builder.buildDayOfMonth(); } if(ok){ CalendarProductprodcut=builder.getCalendarProduct(); prodcut.showCalendarPad(); } } } ChineseCalnederBuilder.java importjava.util.Calendar; publicclassChineseCalnederBuilderimplementsBuilder{ privateCalendarProductproduct; ChineseCalnederBuilder(){ product=newCalendarProduct(); } publicvoidbuildTitle(){ product.title=product.year+"年"+product.month+"月的日历牌"; } publicbooleanbuildWeekTitle(){ String[]s={"一","二","三","四","五","六","日"}; product.weekTitle=s; if(s.length==7) returntrue; else returnfalse; } publicbooleanbuildCalendar(intyear,intmonth){ product.year=year; product.month=month; if(month>=1&&month<=12){ product.calendar=Calendar.getInstance(); product.calendar.set(year,month-1,1); returntrue; } else returnfalse; } publicvoidbuildDayOfMonth(){//创建一个月中天数的算法 intisWeekDay=product.calendar.get(Calendar.DAY_OF_WEEK)-1; intday=0; intm=product.month; inty=product.year; if(m==1||m==3||m==5||m==7||m==8||m==10||m==12) day=31; if(m==4||m==6||m==9||m==11) day=30; if(m==2) if(((y%4==0)&&(y%100!=0))||(y%400==0)) day=29; else day=28; intnextDay=1; String[][]a=newString[6][7]; for(inti=0;i<6;i++) for(intj=0;j<7;j++) a[i][j]=""; for(intk=0;k<6;k++){ if(k==0) for(intj=isWeekDay-1;j<7;j++){ a[k][j]=""+nextDay; nextDay++; } else for(intj=0;j<7&&nextDay<=day;j++){ a[k][j]=""+nextDay; nextDay++; } } product.dayOfMonth=a; } publicCalendarProductgetCalendarProduct(){ returnproduct; } } Calendar