zoukankan      html  css  js  c++  java
  • 设计模式模式适配器

    适配器模式定义:将一个类的接口,转换成客户期望的还有一个接口。适配器让原本接口不兼容的类能够合作无间。

    简单定义:封装对象。并提供不同的接口

    简单样例:

    鸭子接口:

    package headfirst.adapter.ducks;
    
    public interface Duck {
    	public void quack();
    	public void fly();
    }
    

    详细鸭子:

    package headfirst.adapter.ducks;
    
    public class MallardDuck implements Duck {
    	public void quack() {
    		System.out.println("Quack");
    	}
     
    	public void fly() {
    		System.out.println("I'm flying");
    	}
    }

    火鸡接口:

    package headfirst.adapter.ducks;
    
    public interface Turkey {
    	public void gobble();
    	public void fly();
    }

    详细火鸡:

    package headfirst.adapter.ducks;
    
    public class WildTurkey implements Turkey {
    	public void gobble() {
    		System.out.println("Gobble gobble");
    	}
     
    	public void fly() {
    		System.out.println("I'm flying a short distance");
    	}
    }
    

    将火鸡适配成鸭子:

    package headfirst.adapter.ducks;
    
    public class TurkeyAdapter implements Duck {
    	Turkey turkey;
     
    	public TurkeyAdapter(Turkey turkey) {
    		this.turkey = turkey;
    	}
        
    	public void quack() {
    		turkey.gobble();
    	}
      
    	public void fly() {
    		for(int i=0; i < 5; i++) {
    			turkey.fly();
    		}
    	}
    }
    測试:
    package headfirst.adapter.ducks;
    
    public class DuckTestDrive {
    	public static void main(String[] args) {
    		MallardDuck duck = new MallardDuck();
     
    		WildTurkey turkey = new WildTurkey();
    		Duck turkeyAdapter = new TurkeyAdapter(turkey);
       
    		System.out.println("The Turkey says...");
    		turkey.gobble();
    		turkey.fly();
     
    		System.out.println("
    The Duck says...");
    		testDuck(duck);
      
    		System.out.println("
    The TurkeyAdapter says...");
    		testDuck(turkeyAdapter);
    	}
     
    	static void testDuck(Duck duck) {
    		duck.quack();
    		duck.fly();
    	}
    }
    输出:
    The Turkey says...
    Gobble gobble
    I'm flying a short distance
    
    The Duck says...
    Quack
    I'm flying
    
    The TurkeyAdapter says...
    Gobble gobble
    I'm flying a short distance
    I'm flying a short distance
    I'm flying a short distance
    I'm flying a short distance
    I'm flying a short distance


    版权声明:本文博主原创文章。博客,未经同意不得转载。

  • 相关阅读:
    C++中使用stringstream进行类型转换操作
    代理模式
    观察者模式 VS 责任链模式
    10.模板方法模式
    2.里氏替换原则
    单一职责原则
    规格模式
    策略模式的扩展——策略枚举
    策略模式 VS 桥梁模式
    原型模式【下】
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4905141.html
Copyright © 2011-2022 走看看