首页 / 设计模式 / 设计模式--适配器模式
设计模式--适配器模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了设计模式--适配器模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3006字,纯文字阅读大概需要5分钟。
内容图文
![设计模式--适配器模式](/upload/InfoBanner/zyjiaocheng/998/2271667ff29d4dffb28e4b998d0c165a.jpg)
代码演示
鸭子接口:
package com.java.jikexueyuan.adaptermode.duck; public interface Duck { public void quack(); public void fly(); }
绿头鸭实现鸭子接口;
package com.java.jikexueyuan.adaptermode.duck; public class GreenHeadDuck implements Duck { @Override public void quack() { // TODO Auto-generated method stub System.out.println(" Ga Ga"); } @Override public void fly() { // TODO Auto-generated method stub System.out.println("I am flying a long distance"); } }
火鸡接口:
package com.java.jikexueyuan.adaptermode.turkey; public interface Turkey { public void gobble(); public void fly(); }
火鸡实现类:
package com.java.jikexueyuan.adaptermode.turkey; public class WildTurkey implements Turkey { @Override public void gobble() { // TODO Auto-generated method stub System.out.println(" Go Go"); } @Override public void fly() { // TODO Auto-generated method stub System.out.println("I am flying a short distance"); } }
适配器对外展示的是鸭子的形式,所以实现鸭子的接口
package com.java.jikexueyuan.adaptermode.adapter; import com.java.jikexueyuan.adaptermode.duck.Duck; import com.java.jikexueyuan.adaptermode.turkey.Turkey; public class TurkeyAdapter implements Duck { private Turkey turkey; public TurkeyAdapter(Turkey turkey) { this.turkey=turkey; } @Override public void quack() { // TODO Auto-generated method stub turkey.gobble(); } @Override public void fly() { // TODO Auto-generated method stub for(int i=0;i<6;i++) { turkey.fly(); //模拟鸭子飞的远 } } }
适配器模式:将一个类的接口转换成另一种接口.让原本接口不兼容的类可以兼容
从用户的角度看不到被适配者,是解耦的
用户调用适配器转化出来的目标接口方法
适配器再调用被适配者的相关接口方法
用户收到反馈结果,感觉只是和目标接口交互
对象适配器与类适配器
类适配器:通过多重继承目标接口和被适配者类方式来实现适配
多重继承,其中继承的目标接口部分达到适配目的,而继承被适配者类的部分达到通过调用被适配者类里的方法来实现目标接口的功能
对象适配器与类适配器差异
对象适配器和类适配器使用了不同的方法实现适配,对象适配器使用组合,类适配器使用继承.
使用类适配器重新实现上边的例子:
适配器:
package com.java.jikexueyuan.adaptermode.adapter; import com.java.jikexueyuan.adaptermode.duck.Duck; import com.java.jikexueyuan.adaptermode.turkey.WildTurkey; public class TurkeyAdapter2 extends WildTurkey implements Duck { @Override public void quack() { // TODO Auto-generated method stub super.gobble(); } @Override public void fly() { // TODO Auto-generated method stub super.fly(); super.fly(); super.fly(); } }
实例:从枚举器到迭代器的适配
package com.java.jikexueyuan.adaptermode.adapter; import java.util.Enumeration; import java.util.Iterator; public class EnumerationIterator implements Iterator<Object> { private Enumeration enumeration; public EnumerationIterator(Enumeration enumeration) { this.enumeration= enumeration; } @Override public boolean hasNext() { // TODO Auto-generated method stub return enumeration.hasMoreElements(); } @Override public Object next() { // TODO Auto-generated method stub return enumeration.nextElement(); } @Override public void remove() { // TODO Auto-generated method stub throw new UnsupportedOperationException(); } }
内容总结
以上是互联网集市为您收集整理的设计模式--适配器模式全部内容,希望文章能够帮你解决设计模式--适配器模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。