【深入理解设计模式】HeadFirst-- 适配器模式

 

HeadFirst-- 适配器模式

 

 

假设有缺少火鸡,用鸭子来冒充,需要做个DuckAdapter来生成火鸡Turkey。

鸭子接口:

 

/**
 * 类说明:
 * 适配器模式,想让鸭子变成火鸡怎么变,通过一个适配器
 * 
 * 
 * Modify Information:
 * Author        Date          Description
 * ============ =========== ============================
 * DELL          2018年3月13日    Create this file
 * 
* */ public interface Duck { public void quack(); public void fly(); }


火鸡接口:

 

 

/**
 * 类说明
 * 
 * 
 * Modify Information:
 * Author        Date          Description
 * ============ =========== ============================
 * DELL          2018年3月13日    Create this file
 * 
* */ public interface Turkey { public void gobble(); public void fly(); }

 

 

 

 

 

实现一只鸭子:

 

/**
 * 类说明
 * 
 * 
 * Modify Information:
 * Author        Date          Description
 * ============ =========== ============================
 * DELL          2018年3月13日    Create this file
 * 
* */ public class MallardDuck implements Duck { /** * @see designPattern.adapter.Duck#quack() */ @Override public void quack() { System.out.println("quack"); } /** * @see designPattern.adapter.Duck#fly() */ @Override public void fly() { System.out.println("fly"); } }


实现一只和火鸡

 

 

/**
 * 类说明
 * 
 * 
 * Modify Information:
 * Author        Date          Description
 * ============ =========== ============================
 * DELL          2018年3月13日    Create this file
 * 
* */ public class WildTurkey implements Turkey { /** * @see designPattern.adapter.Turkey#gobble() */ @Override public void gobble() { System.out.println("gobble"); } /** * @see designPattern.adapter.Turkey#fly() */ @Override public void fly() { System.out.println("fly"); } }

 

 

 

 

做一个鸭子适配器来生成火鸡:

 

/**
 * 类说明 做一个鸭子适配器,生成火鸡
 * 
 * 
 * Modify Information:
 * Author        Date          Description
 * ============ =========== ============================
 * DELL          2018年3月13日    Create this file
 * 
* */ public class DuckAdapter implements Turkey { Duck duck; Random rand; public DuckAdapter(Duck duck) { this.duck = duck; rand = new Random(); } /** * @see designPattern.adapter.Duck#quack() */ @Override public void gobble() { duck.quack(); } /** * @see designPattern.adapter.Duck#fly() */ @Override public void fly() { if(rand.nextInt(5) == 0){ duck.fly(); } } }

 

 

 

 

 

测试这个适配器:

 

/**
 * 类说明
 * 
 * 
 * Modify Information:
 * Author        Date          Description
 * ============ =========== ============================
 * DELL          2018年3月13日    Create this file
 * 
* */ public class TestDuckAdapter { /** * @param args */ public static void main(String[] args) { MallardDuck duck = new MallardDuck(); WildTurkey turkey = new WildTurkey(); // 鸭子适配器 将鸭子变成火鸡 Turkey testTurkey = new DuckAdapter(duck); System.out.println("duck do something ..."); duck.quack(); duck.fly(); System.out.println("turkey do something ..."); turkey.gobble(); turkey.fly(); System.out.println("duckadapter change turkey to adapter ..."); testTurkey.gobble(); testTurkey.fly(); } }

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(设计模式)