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

原创 2012年03月16日 22:00:06

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

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

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

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

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

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

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

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

/**

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

 * @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!

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

不兼容结构的协调——适配器模式(三):类适配器,双向适配器

9.4 类适配器除了对象适配器模式之外,适配器模式还有一种形式,那就是类适配器模式,类适配器模式和对象适配器模式最大的区别在于适配器和适配者之间的关系不同,对象适配器模式中适配器和适配者之间是关联关系...
  • will130
  • will130
  • 2016年01月15日 10:16
  • 820

设计模式之双向适配器模式

双向适配器模式:将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。 例子: 设计和实现一个双向适配器实例,...
  • Fouse_
  • Fouse_
  • 2017年08月04日 14:01
  • 602

适配器模式(Adapter Pattern)(一):适配器模式介绍

一、意图 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 二、适用性 对象需...
  • jialinqiang
  • jialinqiang
  • 2013年05月18日 23:14
  • 2084

双向适配器

  • 2011年12月03日 12:19
  • 25KB
  • 下载

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

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

【BZOJ1412】[ZJOI2009]狼和羊的故事【最小割】

【题目链接】 显然是最小割... 随便抽了个题怎么又是网络流... /* Pigonometry */ #include #include using namespace std; ...
  • BraketBN
  • BraketBN
  • 2016年04月25日 17:26
  • 291

古代谜题——狼,羊,白菜,农夫过河问题

问题描述:话说有一个农夫带着一只羊,一只狼,还有一筐菜准备过河,可是过河的船只能装下一个人和一样物品(狼,羊或者菜其中之一)。另外的问题就是如果这个农夫不在,狼会吃了羊,羊会吃了菜。这个麻烦的问题农夫...
  • wbxcww
  • wbxcww
  • 2011年09月26日 21:09
  • 19587

FishiGUI:双向依赖--强双向依赖和弱双向依赖

强双向依赖:即在父亲类中聚合了一个孩子,而孩子类中有聚合一个父亲,首这种强双向依赖的关系不仅在现实世界根本不存在,在面向对象世界也不可能存在:“父亲有一个孩子,孩子有一个父亲”涉及到了两个命题,一个是...
  • u012829152
  • u012829152
  • 2014年12月24日 08:48
  • 500

适配器模式原理及实例介绍

本文首先介绍了适配器模式的基本实现原理,然后通过一个实例让读者从代码的角度快速了解适配器模式的运行方式,接着对适配器模式在 JDK 中的应用做了一些介绍,最后对适配器模式的两种实现方式区别、优缺点...
  • wanglha
  • wanglha
  • 2015年07月08日 10:22
  • 768

农夫、狼、羊、白菜(回溯法求解)

为了复试准备,最近做了很多上机题,映象最最深的就是一道关于农夫、狼、羊、白菜的问题。该问题描述如下:有一个农夫带一只羊、一筐菜和一只狼过河.果没有农夫看管,则狼要吃羊,羊要吃菜.但是船很小,只够农夫带...
  • timepe
  • timepe
  • 2012年04月04日 12:09
  • 1249
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【设计模式】【狼和羊的爱情故事——双向适配器】
举报原因:
原因补充:

(最多只允许输入30个字)