1、适配器使用场景:
1、系统需要使用现有的类,而此类的接口不符合系统的需要。
2、想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作,这些源类不一定有一致的接口。
3、通过接口转换,将一个类插入另一个类系中。(比如老虎和飞禽,现在多了一个飞虎,在不增加实体的需求下,增加一个适配器,在里面包容一个虎对象,实现飞的接口。)
2、生活场景
目前只有适配二脚插头的插座,但是买回来的电器是三脚的插头。
那如果让三脚插头可以插在二脚的插座上呢? 这时候就可以用适配作为桥梁,适配器连接二脚插头和三脚的插座。
3、代码实现
/** * 两脚插座接口(目标接口) */ public interface TwoPinSocket { //两脚 public void towPinConnect(); } /** * 两脚插座实现(目标) */ public class TwoPinSocketImpl implements TwoPinSocket { @Override public void towPinConnect() { System.out.println("我是两脚插座"); } } /** * 第一种方式:通过继续获的被适配者的方法,从而转成通用方法 * 适配器目的:两脚插座适配三脚插头。插座是目标,插头是被适配。 * 适配器需要实现目标接口 */ public class adapter extends ThreePinPlug implements TwoPinSocket { @Override public void towPinConnect() { super.threePinPlug(); } } /** * 第二种方式:注入被适配对象方式实现适配器 * 适配器目的:两脚插座适配三脚插头。插座是目标,插头是被适配。 * 适配器需要实现目标接口 */ public class adapter implements TwoPinSocket { private ThreePinPlug threePinPlug; public void ThreePinPlug(ThreePinPlug threePinPlug){ this.threePinPlug = threePinPlug; } @Override public void towPinConnect() { threePinPlug.threePinPlug(); } }