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();
    	}
    }
    



  • 相关阅读:
    超300程序员受益入职的面试经验
    【修真院“正直”系列之三】【修真神界】【修行卷】【第一章】修真院入场券
    Js的同步异步以及回调函数
    Bootstrap栅格布局使用
    为什么程序员的工资比其他行业高这么多?
    Java培训机构可靠吗?
    get 与 post的区别?application json 与form表单的区别?
    谈谈以前端角度出发做好SEO需要考虑什么?
    【修真院“纯洁”系列之十九】驱逐令
    Redis缓存穿透和缓存雪崩以及解决方案
  • 原文地址:https://www.cnblogs.com/wyang0126/p/5039914.html
Copyright © 2011-2022 走看看