设计模式——适配器模式
来源:互联网 发布:做美工需要学什么 编辑:程序博客网 时间:2024/06/06 19:10
适配器模式是在系统整体已经设计完成时采用适配器模式满足新的需求的一种设计模式。
比如说,你的笔记本电脑是用电源做适配器将外界电压转换成笔记本电脑适用电压的。不能是为了电压去设计电脑。
例子:鸭子和火鸡【来自-深入浅出设计模式】
首先,我来写一下我已经做好的系统:一只鸭子在飞,在叫。
见代码:
public interface Duck { public void qucak();//鸭子呱呱叫 public void fly();//鸭子飞}
public class MallardDuck implements Duck { @Override public void qucak() { System.out.println("Quack!"); } @Override public void fly() { System.out.println("I'm flying!"); }}
public class Test { public static void testDuck(Duck duck){ duck.qucak(); duck.fly(); } public static void main(String[] args) { Duck duck = new MallardDuck(); testDuck(duck); }}/**OutputQuack!I'm flying!*/
其实,我们的系统中还有一种动物——火鸡
见代码:
public interface Turkey { public void gobble();//火鸡叫 public void fly();//火鸡飞}
public class WildTurkey implements Turkey { @Override public void gobble() { System.out.println("Gobble gobble"); } @Override public void fly() { System.out.println("I'm flying a short distance"); }}
ok,我们现在想让testDuck()方法能够实现火鸡的【叫】和【飞】。因为我们的系统已经完成了【实际上,这个系统或许很大】。我们不想为了火鸡而改变自己的系统,怎么办呢?
用一个火鸡适配器
见适配器代码:
public class TurkeyAdapter implements Duck{ Turkey turkey; public TurkeyAdapter(Turkey turkey){ this.turkey = turkey; } @Override public void qucak() { turkey.gobble(); } @Override public void fly() { turkey.fly(); }}
测试代码:
public class Test { public static void testDuck(Duck duck){ duck.qucak(); duck.fly(); } public static void main(String[] args) { Turkey turkey = new WildTurkey(); Duck duck = new TurkeyAdapter(turkey); testDuck(duck); }}/**OutputGobble gobbleI'm flying a short distance*/
好了,成功让testDuck()方法适配火鸡!
2 1
- 设计模式—适配器模式
- 设计模式—适配器模式
- 设计模式—适配器模式
- 设计模式—适配器模式
- 设计模式—适配器模式
- 设计模式—适配器模式
- 设计模式—适配器模式
- 设计模式—适配器模式
- 设计模式——适配器
- 每日设计模式——适配器模式
- 浅谈设计模式——适配器模式
- 设计模式——适配器模式(Adapter)
- 设计模式—适配器模式—C++
- JAVA设计模式——适配器模式
- java设计模式——适配器模式
- 【大话设计模式】——适配器模式
- JAVA设计模式——适配器模式
- 设计模式——适配器模式
- sql盲注入 python
- 为什么说php是弱类型好学,跟其他语言的区别
- 访问远程文件夹访问不了的问题之其中一个解决方案
- Poi导出(防止内存溢出)的两种方式
- [转]计算机视觉和模式识别的code
- 设计模式——适配器模式
- DOM解析(JavaWeb)
- Java异常处理机制
- NOIP2008传纸条
- 原码 反码 补码 详解
- Best Time to Buy and Sell Stock——最优买卖股票问题
- 基本国际格局
- 【OpenCV 小程序】控制台版本字符画与字符视频制作
- LeetCode OJ(9)