【设计模式】【披着羊皮的狼——适配器模式起源的传说】
来源:互联网 发布:科讯cms漏洞 编辑:程序博客网 时间:2024/04/30 08:04
适配器最早的发明者不是人,而是狼。这得从一个古老的家族斗争故事讲起。传说中在广袤的内蒙古大草原上生活着一群狼和和羊。羊吃草,狼吃羊,每天都发生着这样的血案。终于有一天,羊说:我受够了,我再也不要忍受这种担惊受怕的日子了,我要离开这里,我要到一个没有狼的地方去。于是羊群都迁徙,上了梁山,做起了山羊。上梁山的路只有一条,有重“羊”把守,狼抓羊变得越来越困难。
因为抓不到羊,灰太狼老是受红太狼老婆的冷落,完全没了一家之主的地位,在经历了无数次失败之后,灰太狼终于想出了一个办法:假扮羊混入梁山。为了使自己看起来更像一只羊,灰太狼拿出了一个祖传的法宝:狼适配器——一张羊皮。为了使这次行动更加顺利,灰太狼分析了狼和羊的特征,并且用程序进行了模拟:
package com.crayon.adapter.wolfandsheep;
/**
* 狼的接口
* @author jingping.yi
*
*/
public interface IWolf {
// 狼的外貌
public void wolfLooks();
// 吃肉
public void eatMeat();
}
package com.crayon.adapter.wolfandsheep;
/**
* 羊的接口。
* @author jingping.yi
*
*/
public interface ISheep {
// 羊的外貌
public void sheepLooks();
// 吃草
public void eatGrass();
}
package com.crayon.adapter.wolfandsheep;
public class ARealWolf implements IWolf {
@Override
public void wolfLooks() {
System.out.println("I am a real wolf, I have a wolfLooks.");
}
@Override
public void eatMeat() {
System.out.println("I am a real wolf, I eat meat.");
System.out.println("老婆,我抓到羊了");
}
}
package com.crayon.adapter.wolfandsheep;
public class ARealSheep implements ISheep {
@Override
public void sheepLooks() {
System.out.println("I am a real sheep, I have a sheepLooks.");
}
@Override
public void eatGrass() {
System.out.println("I am a real sheep, I eat grass.");
}
}
package com.crayon.adapter.wolfandsheep;
/**
* 一个狼适配器。这样他就是一直披着羊皮的狼了。
* @author jingping.yi
*
*/
public class AWolfAdapter implements ISheep {
// 被适配的对象,即本质是一匹狼
IWolf wolf = null;
/**
* 构造函数。将一匹狼来包装成一头羊。
*/
public AWolfAdapter(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.wolfandsheep;
/**
* 适配器模式——披着羊皮的狼
* @author jingping.yi
*
*/
public class Main {
public static void main(String[] args) {
// 一头真羊
ISheep sheepA = new ARealSheep();
sheepA.sheepLooks();
sheepA.eatGrass();
// 一头披着羊皮的狼
ISheep fakeSheep = new AWolfAdapter(new ARealWolf());
fakeSheep.sheepLooks();
fakeSheep.eatGrass();
}
}
// 输出
I am a real sheep, I have a sheepLooks.
I am a real sheep, I eat grass.
I am a sheep,too.
I am a real wolf, I eat meat.
老婆,我抓到羊了
通过这次充分的准备,灰太狼终于如愿以偿的抓到了羊,红太狼对他也变得更温柔体贴了,不久之后还诞下了爱的结晶——可爱的小灰灰,从此一家三口过着幸福美满的生活。
- 【设计模式】【披着羊皮的狼——适配器模式起源的传说】
- 设计模式的学习(2)——适配器模式
- Python 的结构型设计模式——适配器模式
- 设计模式—适配器模式
- 设计模式—适配器模式
- 设计模式—适配器模式
- 设计模式—适配器模式
- 设计模式—适配器模式
- 设计模式—适配器模式
- 设计模式—适配器模式
- 设计模式—适配器模式
- 设计模式 <两个迭代器的传说>
- 我眼中的设计模式-适配器模式
- JAVA设计模式-类的适配器模式
- 设计模式--对适配器模式的思考
- 设计模式之适配器模式的图解
- 常用的设计模式-适配器模式
- 模式的秘密——适配器模式
- 近一个月来的收获
- objective-c产生随机数
- 电脑工程师的情书
- VS2008编译问题!
- 高手的25个标准
- 【设计模式】【披着羊皮的狼——适配器模式起源的传说】
- 第14章 错误处理与调试 (三)
- ==把VIM打造成开发C的IDE==
- ie6下height高度问题
- Android应用程序签名详解
- 计算机期刊杂志投稿指南
- 【设计模式】【狼和羊的爱情故事——双向适配器】
- DataGridView中按单元格填充内容,字体颜色,背景色
- Java keytool工具的作用及使用方法