23种设计模式总篇::https://chenmingyu.top/categories/设计模式/java
适配器模式属于结构型模式,又叫包装模式git
定义:
把一个类的接口变换成客户端所期待的另外一种接口,从而使本来接口不匹配而没法一块儿工做的两个类可以在一块儿工做github
在现有的系统中有新旧两个接口,因为新旧接口不兼容致使客户端调用出现问题,可是现有系统还须要使用旧的接口,因此这个接口不能重构,可是为了可以让客户端正常调用,咱们就须要将新的接口转换成旧的接口,这种解决方式就是适配器模式设计模式
角色:ide
适配器模式是为了在扩展应用的时候减小代码时才使用的,因此最初设计系统时不要考虑使用适配器模式测试
源码地址:https://github.com/mingyuHub/design-patternsthis
Target
,咱们指望的接口模样,供客户端调用设计
/** * @author: chenmingyu * @date: 2019/2/18 18:38 * @description: 目标接口 */ public interface Target { /** * 客户端访问的目标接口 */ void request(); }
Adaptee
的adapterMethod
方法是咱们指望被适配的方法code
/** * @author: chenmingyu * @date: 2019/2/18 19:20 * @description: 被适配类 */ public class Adaptee { /** * 被适配的接口 */ public void adapterMethod(){ System.out.println("我是要被适配的方法"); }; }
Adapter
,将被适配类Adaptee和目标接口Target接口组合到一块儿blog
/** * @author: chenmingyu * @date: 2019/2/18 19:20 * @description: 适配器 */ public class Adapter implements Target { /** * 被适配类 */ private Adaptee adaptee; public Adapter(Adaptee adaptee) { this.adaptee = adaptee; } @Override public void request() { adaptee.adapterMethod(); } }
public static void main(String[] args) { Adaptee adaptee = new Adaptee(); Adapter adapter = new Adapter(adaptee); adapter.request(); }
输出
我是要被适配的方法
设计模式之禅:https://www.kancloud.cn/sstd521/design/193573