- 0
- 0
- 约1.63千字
- 约 4页
- 2026-02-13 发布于辽宁
- 举报
软件设计模式项目大作业示范案例
java
//策略接口
publicinterfaceProgressTrackingStrategy{
floatcalculateProgress(Contentcontent,UserActionuserAction);
}
//具体策略:视频进度策略
publicclassVideoProgressStrategyimplementsProgressTrackingStrategy{
@Override
publicfloatcalculateProgress(Contentcontent,UserActionuserAction){
VideoContentvideo=(VideoContent)content;
longtotalDuration=video.getTotalDuration();
longwatchedDuration=userAction.getWatchedDuration();
floatprogress=(float)watchedDuration/totalDuration;
//超过90%视为完成
returnMath.min(progress,1.0f);
}
}
//具体策略:测验进度策略
publicclassQuizProgressStrategyimplementsProgressTrackingStrategy{
@Override
publicfloatcalculateProgress(Contentcontent,UserActionuserAction){
QuizContentquiz=(QuizContent)content;
intpassingScore=quiz.getPassingScore();
intuserScore=userAction.getQuizScore();
//及格则进度为100%,否则为0%或上次得分百分比
return(userScore=passingScore)?1.0f:(float)userScore/quiz.getTotalScore();
}
}
//上下文类
publicclassContentProgressTracker{
privateProgressTrackingStrategystrategy;
publicvoidsetStrategy(ProgressTrackingStrategystrategy){
this.strategy=strategy;
}
publicfloattrackProgress(Contentcontent,UserActionuserAction){
if(strategy==null){
//根据内容类型自动选择策略
Stringtype=content.getContentType();
switch(type){
caseVIDEO:
strategy=newVideoProgressStrategy();
break;
caseDOCUMENT:
strategy=newDocumentProgressStrategy();
break;
caseQUIZ:
strategy=newQuizProgressStrategy();
break;
//其他类型...
default:
thrownewUnsupportedOperationException(不支持的内容类型进度跟踪);
}
}
returnstrategy.calculateProgress
原创力文档

文档评论(0)