packagecom.Interface_Demo;importjava.util.ArrayList;publicclassStudentOperatorImpl1implementsStudentOperator{@Override//打印全班学生信息publicvoidprintAllInfo(ArrayList<Student> students){System.out.println("---------------全部学生信息如下------------------");for(int i =0; i < students.size(); i++){Student s = students.get(i);System.out.println("学生姓名:"+s.getName()+" 学生性别:"+s.getSex()+" 学生成绩:"+s.getScore());}System.out.println("----------------------------------------------");}@OverridepublicvoidprintAverageScore(ArrayList<Student> students){double avgScore =0.0;for(int i =0; i < students.size(); i++){Student s = students.get(i);avgScore += s.getScore();}System.out.println("全班学生的平均成绩:"+(avgScore/students.size()));}}
StudentOperatorImpl2(继承接口的类,即第二套方案)
packagecom.Interface_Demo;importjava.util.ArrayList;publicclassStudentOperatorImpl2implementsStudentOperator{@Override//打印全班学生信息publicvoidprintAllInfo(ArrayList<Student> students){System.out.println("---------------全部学生信息如下------------------");int count1 =0;int count2 =0;for(int i =0; i < students.size(); i++){Student s = students.get(i);System.out.println("学生姓名:"+s.getName()+" 学生性别:"+s.getSex()+" 学生成绩:"+s.getScore());if(s.getSex()=='男'){count1++;}else{count2++;}}System.out.println("男生人数:"+count1+" 女生人数:"+count2);System.out.println("全班人数:"+students.size());System.out.println("----------------------------------------------");}@OverridepublicvoidprintAverageScore(ArrayList<Student> students){double avgScore =0.0;double max = students.get(0).getScore();double min = students.get(0).getScore();for(int i =0; i < students.size(); i++){Student s = students.get(i);avgScore += s.getScore();if(s.getScore()>max) max = s.getScore();if(s.getScore()<min) min = s.getScore();}System.out.println("最高分:"+max);System.out.println("最低分:"+min);System.out.println("全班学生的平均成绩:"+((avgScore-max-min)/(students.size()-2)));}}
ClassManager类
packagecom.Interface_Demo;importjava.util.ArrayList;publicclassClassManager{privateArrayList<Student> students =newArrayList<>();//利用面向接口,进行方案切换//第一套方案//StudentOperator studentOperator = new StudentOperatorImpl1();//使用第一套方案就是StudentOperatorImpl1,第二套方案就new StudentOperatorImpl2//第二套方案StudentOperator studentOperator =newStudentOperatorImpl2();publicClassManager(){students.add(newStudent("飞鸟马时",'女',100));students.add(newStudent("枣伊吕波",'女',99));students.add(newStudent("伊洛玛丽",'女',98));students.add(newStudent("尾刃康纳",'女',99));}//打印全班学生信息publicvoidprintInfo(){studentOperator.printAllInfo(students);}//打印全班学生分数publicvoidprintScore(){studentOperator.printAverageScore(students);}}