软件设计模式项目大作业示范案例.docxVIP

  • 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)

1亿VIP精品文档

相关文档