【设计模式】【狼和羊的爱情故事——双向适配器】

来源:互联网 发布:科讯cms漏洞 编辑:程序博客网 时间:2024/04/30 11:30

        话说自从灰太狼抓到羊后,他们一家三口就过着幸福美满的生活。随着时间的流逝,灰太狼渐渐老去并挂掉,临死前他将自己的抓羊秘技传给了已经成年的小灰灰,并留下一件狼皮和一件羊皮。小灰灰也承担起了抓羊的重任。

        某一夜,北风呼呼的刮,雪花飘飘洒洒,小灰灰独自一狼上了梁山,混进了羊群。不幸的是,他在抓羊的时候被猎人撞见,只听见一声枪响,小灰灰他受了重伤,但他侥幸逃脱了,救他的是一只羊,从此他们约定三生,互诉着衷肠……(汤潮的歌声在夜空中响起)

        小灰灰和羊相爱了,但是在梁山上,狼只能一直披着羊皮生活,但是他还是很开心。直到有一天,小灰灰愁眉苦脸,像是有心事的样子。

        羊看见了,于是问小灰灰:“亲爱的,你怎么了?”

        小灰灰说:“我想我的妈妈了,自从上次离开家后,我都没有回去看过她。妈妈老了,不知道她现在过得怎么样,我很担心”。

        羊说:“亲爱的,别担心,明天我就陪你回去看你妈妈。”

        狼说:“可是,那可是狼国啊,对你太危险了。”

        羊说:“你爸爸临死前不是给了你一张羊皮和一张狼皮吗,交给我办,你能扮成羊,那我也能扮成狼”。经过一夜,羊改造成了一个新型的法宝——狼羊双向适配器。她把羊皮和狼皮缝在一起,正面羊皮,翻过来后就是狼皮,这样一件衣服,既能扮狼又能扮羊,非常的方便。为了安全起见,狼再次用程序模拟了一遍:

/**

 * 一个双向适配器。可以把一匹狼适配成一头羊,也可以把一头羊适配成一匹狼。

 * @author jingping.yi

 *

 */

public class ATwoFaceAdapter implements ISheep, IWolf {

    ISheep sheep = null;

    public ATwoFaceAdapter(ISheep sheep){

       this.sheep = sheep;

    }

    @Override

    public void wolfLooks() {

       // 假装自己是一匹狼

       System.out.println("I am a wolf,too!");

       // 隐藏自己的外貌

       // sheep.sheepLooks();

    }

 

    @Override

    public void eatMeat() {

       // 本质是吃草

       sheep.eatGrass();

    }

 

    IWolf wolf = null;

    public ATwoFaceAdapter(IWolf wolf){

       this.wolf = wolf;

    }

    @Override

    public void sheepLooks() {

       // 假装自己是一头羊

       System.out.println("I am a sheep,too.");

       // 隐藏自己的外貌

       // wolf.wolfLooks();

 

    }

 

    @Override

    public void eatGrass() {

       // 本质是吃肉

       wolf.eatMeat();

    }

 

}

package com.crayon.adapter.wolfandsheep2face;

 

/**

 * 双向适配器——可以有披着羊皮的狼,也可以有披着狼皮的羊。

 * @author jingping.yi

 *

 */

public class Main {

    public static void main(String[] args) {

       // 把一匹狼适配成一头羊

       ISheep AFakeSheep =  new ATwoFaceAdapter(new ARealWolf());

       AFakeSheep.sheepLooks();

       // AFakeSheep.eatGrass();

      

       // 把一头羊适配成一匹狼

       IWolf AFakeWolf = new ATwoFaceAdapter(new ARealSheep());

       AFakeWolf.wolfLooks();

       // AFakeWolf.eatMeat();

    }

}

// 输出

I am a sheep,too.

I am a wolf,too!

        通过程序测试了这件无敌法宝——狼羊双向适配器很安全后,小灰灰终于答应带着妻子回去看红太狼了。也是因为有了这个双向适配器,他们自由的穿梭在狼的王国和羊的王国,为了河蟹社会贡献自己的一份力量。

原创粉丝点击