Java 适配器模式-难道学姐这是吃醋了么?......让你以最生动的例子记住适配器模式

忙!忙!忙!一直没有更新文章,唉,访问量掉的厉害啊!粉丝增长速度也慢了!最近赶着项目上线,更新迭代!实在没有时间呐!!!还有,上次写的文章有点说不过去,整改了一下,今天好不容易抽出来点时间,来讲这个故事啦!



小故事引入

自上篇继续讲故事

“嗯—”!,伸了个懒摇,我睡得好舒服!我看学姐还在睡觉,就没有去打扰她,我起床后便去做早餐。今天打算吃完早餐后去学校,准备上课!

没想到,学姐这么能睡,一下子睡到了10点,我说:“我给你加热一下早餐吧!吃完后歇会儿咱们就去学校!”,学姐点点头答应了!

这是我的第一堂课!讲的是Java适配器模式,哈哈,这基础知识对于我来说不在话下,但是对于和我一样刚入学的小姐姐来说,这就不一样了!下课后,有个小姐姐问我问题,她有很多不懂的地方,我当然能理解,第一次接触这么深的概念,堪比登天!我仔细给她讲了这节课的内容,或许她听懂了吧!哈哈!或许是不好意思问我了!

下课了,那位问我问题的小姐姐,突然和我说,“中午我们一起去吃饭吧!”,我委婉地回答:“不好意思,我中午有约了…”。下面是自习课,我估计她还是没有搞懂,我便去她旁边给她讲明白!直到饭点的时候,她可算搞懂了!此时,我站起来准备走出教室,快到门口的时候,发现学姐已经在等我了!不过,貌似有点糟糕,我能感觉到学姐此时此刻的心情!“吃醋了呗!”,我上前和学姐尴尬的说道:“去吃什么呢?”,“饺子,多沾点醋!”,紧接着,拉着我就走…

还真是,学姐要了一碗醋,竟然让我喝下!此时我心想“好吧,看来是我吃醋了!”,“以后不许坐到女同学旁边!”,学姐俏皮的说道!我又有什么办法呢,点点头,然后大口大口喝起醋来…

吃完饭后,学姐对我说:“我们去学校外面租房住,租房住在一块方便照顾我…”,我点点头答应了!

好了,谁知道租房会发生什么,等下篇文章吧!来看看适配器模式!


基本概念

我们都希望故事中的小姐姐能学会适配器模式,但是老师讲的她不懂,她需要我来教,我就承担适配者的责任,我要教会她,让小姐姐可以学会适配器模式,官方一点的话来讲,就是 将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

接下来会讲到类适配器对象适配器,可以看代码中的注释!


类适配器

首先,小姐姐需要我来讲,我要给她先讲概念,再讲代码实例!

创建我这个接口!

/**
 * 这个代表我,小姐姐需要通过我来学会适配器模式(就是她需要我教,她不会)
 */
public interface IKnow {

    //教她基本概念
    void teachBasic();

    //给她讲代码实例
    void teachCode();

}


目标:小姐姐要学会适配器模式,创建这个目标类

/**
 * 目标:同班小姐姐最终要学会适配器模式
 */
public class SmallSisterKnow {

    /**
     * 学会适配器模式
     */
    public void know() {
        System.out.println("小姐姐终于学会了适配器模式!");
    }

}


首先,小姐姐知道要达成的目标,她朝这个方向去努力,学会适配器模式的动力来自于这个目标!所以,小姐姐继承这个目标,并实现有人教她的接口,也就是我!然后我要教她(重写方法)!

/**
 * 同班小姐姐类
 */
public class SmallSister extends SmallSisterKnow implements IKnow {


    /**
     * 重写教小姐姐的方法(可以理解为她需要教)
     */
    @Override
    public void teachBasic() {
        System.out.println("我给小姐姐讲了基本的概念");
    }

    /**
     * 重写教小姐姐的方法(可以理解为她需要教)
     */
    @Override
    public void teachCode() {
        System.out.println("我给小姐姐讲了代码实例");

        //然后小姐姐明白了(你不会还不明白吧,如果你明白了,可以把故事中的小姐姐抱走了)
        super.know();
    }
}


接下来,整个事件放进“时光机”,运行这个事件吧!

/**
 * @author CSDN程忆难
 * @link https://myhub.blog.csdn.net
 */
public class Adapter {

    public static void main(String[] args) {

        SmallSister smallSister = new SmallSister();

        //开始教小姐姐适配器模式了

        //给她讲基本的概念
        smallSister.teachBasic();
        
        //给她讲代码
        smallSister.teachCode();

    }

}


来看下代码的结构:
在这里插入图片描述


时光机开始运行了!
在这里插入图片描述
明白了吗?明白了就把小姐姐抱走吧!


对象适配器

对象适配器在原有的例子上稍微做下修改!

讲同班小姐姐类修改一下:

/**
 * 同班小姐姐类
 */
public class SmallSister implements IKnow {

    private SmallSisterKnow smallSisterKnow = new SmallSisterKnow();

    /**
     * 重写教小姐姐的方法(可以理解为她需要教)
     */
    @Override
    public void teachBasic() {
        System.out.println("我给小姐姐讲了基本的概念");

    }

    /**
     * 重写教小姐姐的方法(可以理解为她需要教)
     */
    @Override
    public void teachCode() {
        System.out.println("我给小姐姐讲了代码实例");

        //然后小姐姐明白了(你不会还不明白吧,如果你明白了,可以把故事中的小姐姐抱走了)
        smallSisterKnow.know();
    }
}

现在不是继承自目标,而是将目标实例化出来(把目标放在心上才能学会),然后让我来教!
在这里插入图片描述


时光机开始!
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章