学校的成绩单过去只有语文数学英语这三门,这三门也被称之为基础课,设计的时候是用链表进行存储的。现在不是要求全面发展嘛,还要看体育成绩。不过体育算到基础课也不太合适,不能在原先的类上进行扩展。这时候怎么展示成绩单呢?
其实也很简单,加个适配器就好了。用我想要的接口去调用。
定义一个成绩单的接口
public interface IReport { }
基础课程类
public class PrimaryReport implements IReport {
LinkedList<Integer> primary ;
public PrimaryReport(int...reports){
primary = new LinkedList<Integer>();
for(int i:reports){
primary.add(i);
}
}
public LinkedList<Integer> getReport() {
return primary;
}
}
扩充后的其他科类,目前只有体育
public class OtherReport implements IReport {
private int sport = 0;
public OtherReport(int report){
this.sport = report;
}
public int getOtherReport() {
return sport;
}
}
写个适配器能知道所有课信息
public class Report implements IReport {
LinkedList<Integer> primaryll;
int sport;
public Report(PrimaryReport primaryReport
, OtherReport otherReport) {
this.primaryll = primaryReport.getReport();
this.sport = otherReport.getOtherReport();
}
public void getReport(){
String reports = "";
reports += "语文成绩是"+primaryll.get(0)+"\n";
reports += "数学成绩是"+primaryll.get(1)+"\n";
reports += "英语成绩是"+primaryll.get(2)+"\n";
reports += "体育成绩是"+sport;
System.out.println(reports);
}
}
最后看看场景
public class Client {
public static void main(String[] args) {
PrimaryReport primary = new PrimaryReport(30,80,20);//语文数学英语
OtherReport other = new OtherReport(90);//体育
Report reports = new Report(primary,other);
reports.getReport();
}
}
运行结果:
语文成绩是30
数学成绩是80
英语成绩是20
体育成绩是90