奢侈品购物网站排名,网页制作教程步骤,嘉兴高端网站建设公司,网站规划的主要内容写在前面
适配器设计模式属于结构型设计模式的一种#xff0c;本文一起来看下。
1#xff1a;介绍
1.1#xff1a;什么时候适配器设计模式
当现有接口客户端无法直接调用时#xff0c;我们可以考虑适配器设计模式#xff0c;来定义一个能够供客户端直接调用的接口本文一起来看下。
1介绍
1.1什么时候适配器设计模式
当现有接口客户端无法直接调用时我们可以考虑适配器设计模式来定义一个能够供客户端直接调用的接口并在其中进行自动的适配这也是适配器设计模式的核心。
1.2UML类图
原型设计模式包含如下元素
1Adaptee现有接口该接口无法直接满足客户端需求。
2Target适配接口客户端可以直接调用
3Adapter实现适配接口Target提供适配并最终调用Adaptee
4Client客户端类即使用者具体分为类适配模式和对象适配模式其中类适配模式是适配器类同样实现目标接口从而直接调用对象适配模式是通过组合现有接口的方式对象适配模式UML图如下
对象适配模式UML图如下(区别就是不再实现Target接口而是组合)
2实例
源码 。
2.1场景
现在有一个接口有一个方法需要一个ListString的参数但是客户端只能提供逗号分割的字符串作为参数这样就可以定义一个接受逗号分割的字符串参数的接口并提供实现进行适配。
2.2程序
现有接口和实现类
// 现有接口
public interface Adaptee {void tellMeYourDream(ListString list);
}// 现有接口实现类
public class AdapteeImpl implements Adaptee {public void tellMeYourDream(ListString list) {System.out.println(你的梦想列表 list);}
}适配接口
// 客户端需要的接口
public interface Target {// 以逗号分割的字符串void tellMeYourDream(String content);
}类适配模式
// 客户需要的接口实现类即适配器类注意这里extends AdapteeImpl就是类适配模式的来源
public class TargetClassAdapter extends AdapteeImpl implements Target {public void tellMeYourDream(String content) {// 客户给的是逗号分割的字符串这里适配成现有接口需要的ListListString listResult Splitter.on(,).splitToList(content);// 适配完成调用现有类的方法super.tellMeYourDream(listResult);}
}测试
Test
public void classadapter() {Target target new TargetClassAdapter();target.tellMeYourDream(世界和平,见到想见的人,平平淡淡);
}你的梦想列表[世界和平, 见到想见的人, 平平淡淡]对象适配模式
// 客户需要的接口实现类即适配器类
public class TargetObjectAdapter implements Target {private Adaptee adaptee;public TargetObjectAdapter(Adaptee adaptee) {this.adaptee adaptee;}public void tellMeYourDream(String content) {// 客户给的是逗号分割的字符串这里适配成现有接口需要的ListListString listResult Splitter.on(,).splitToList(content);// 适配完成调用现有类的方法
// super.tellMeYourDream(listResult);this.adaptee.tellMeYourDream(listResult);}
}测试
Test
public void objectadapter() {Target target new TargetObjectAdapter(new AdapteeImpl());target.tellMeYourDream(世界和平,见到想见的人,平平淡淡);
}你的梦想列表[世界和平, 见到想见的人, 平平淡淡]写在后面
参考文章列表
一文彻底弄懂适配器模式(Adapter Pattern) 。