设计模式之适配器模式

学校的成绩单过去只有语文数学英语这三门,这三门也被称之为基础课,设计的时候是用链表进行存储的。现在不是要求全面发展嘛,还要看体育成绩。不过体育算到基础课也不太合适,不能在原先的类上进行扩展。这时候怎么展示成绩单呢?
其实也很简单,加个适配器就好了。用我想要的接口去调用。
定义一个成绩单的接口

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值