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

    适配器模式将一个类的接口,转换成客户所期望的另一个接口,适配器让原本接口不兼容的类可以合作无间。

    package cn.adapter.demo;
    /**
     * 鸭子接口:会quack叫和飞
     * @author wy
     *
     */
    public interface Duck {
    
    	public void quack();
    
    	public void fly();
    }
    
    package cn.adapter.demo;
    /**
     * 一个fool鸭子
     * @author wy
     *
     */
    public class FoolDuck implements Duck {
    
    	@Override
    	public void quack() {
    		// TODO Auto-generated method stub
    		System.out.println("a fool duck quack...");
    	}
    
    	@Override
    	public void fly() {
    		// TODO Auto-generated method stub
    		System.out.println("a fool duck fly so far....");
    	}
    
    }
    
    package cn.adapter.demo;
    /**
     * 火鸡接口:只会gooble叫,而且飞不远
     * @author wy
     *
     */
    public interface Turkey {
    
    	public void gooble();
    
    	public void fly();
    }
    

    package cn.adapter.demo;
    /**
     * 一个野火鸡
     * @author wy
     *
     */
    public class WildTurkey implements Turkey {
    
    	@Override
    	public void gooble() {
    		// TODO Auto-generated method stub
    		System.out.println("wild turkey goggle....");
    	}
    
    	@Override
    	public void fly() {
    		// TODO Auto-generated method stub
    		System.out.println("wild turkey just can fly a short distince...");
    	}
    
    }
    
    火鸡适配器:

    package cn.adapter.demo;
    /**
     * 一个火鸡适配器:将火鸡变成鸭子
     * @author wy
     *
     */
    public class TurkeyApater implements Duck {
    	private Turkey turkey;
    
    	public TurkeyApater(Turkey turkey) {
    		this.turkey = turkey;
    	}
    
    	@Override
    	public void quack() {
    		// TODO Auto-generated method stub
    		turkey.gooble();
    	}
    
    	@Override
    	public void fly() {
    		// TODO Auto-generated method stub
    		turkey.fly();
    	}
    
    }
    
    鸭子适配器:

    package cn.adapter.demo;
    /**
     * 鸭子适配器:将鸭子变成火鸡
     * @author wy
     *
     */
    public class DuckApater implements Turkey {
    	private Duck duck;
    
    	public DuckApater(Duck duck) {
    		this.duck = duck;
    	}
    
    	@Override
    	public void gooble() {
    		// TODO Auto-generated method stub
    		duck.quack();
    	}
    
    	@Override
    	public void fly() {
    		// TODO Auto-generated method stub
    		duck.fly();
    	}
    
    }
    

    测试:

    package cn.adapter.demo;
    
    public class Test {
    
    	public static void main(String[] args) {
    		WildTurkey turkey = new WildTurkey();
    		TurkeyApater apater = new TurkeyApater(turkey);
    		//让火鸡执行鸭子的动作
    		apater.quack();
    		apater.fly();
    
    		FoolDuck duck = new FoolDuck();
    		DuckApater duckApater = new DuckApater(duck);
    		//让鸭子执行火鸡的动作
    		duckApater.gooble();
    		duckApater.fly();
    	}
    }
    



  • 相关阅读:
    iOS 文本展开收起
    iOS 图片拉伸压缩展示对比
    iOS 视图在最前显示的两种实现方式对比
    iOS UITableView上滑吸顶的三种方案
    iOS UITableView在 UITableViewStyleGrouped样式下第一组组头变高问题
    友盟统计 实时统计使用
    RN 侧滑删除功能实现
    RN 使用Radio实现单选
    RN 使用Checkbox实现多选
    iOS开发加密
  • 原文地址:https://www.cnblogs.com/wyang0126/p/5039914.html
Copyright © 2011-2022 走看看