java设计模式之适配器模式

mac2025-07-20  5

适配器模式

  就是改变源接口,以便于兼容目标接口;如果不准备实现一个接口的所有方法时,就可以使用“缺省适配器模式”制造一个抽象类,给出所有方法的平庸的具体实现,这样,从这个抽象类再继承下去的子类就不必实现所有的方法了。

适配器模式实现方式

  类的适配器模式和对象的适配器模式;

 

类的适配器模式:

目标接口类:

package adapter; public interface Target { void serviceOperation1(); void serviceOperation2(); void serviceOperation3(); }

需要适配接口的类:

package adapter; public class Adaptee { /** * 不想实现这个serviceOperation1多余的方法,需要把它适配掉 */ public void serviceOperation1(){} }

业务实现类:

package adapter; /** * 只需要实现 serviceOperation2、serviceOperation3 * 避免实现多余的方法 */ public class Adapter extends Adaptee implements Target { @Override public void serviceOperation2() { } @Override public void serviceOperation3() { } }

对象的适配器模式:

Tatget接口类:

package adapter; public interface Target { void serviceOperation1(); void serviceOperation2(); void serviceOperation3(); }

需要适配接口方法的类:

package adapter; public class Adaptee { /** * 不想实现这个serviceOperation1多余的方法,需要把它适配掉 */ public void serviceOperation1(){} }

业务操作类:

package adapter; /** * 只需要实现 serviceOperation2、serviceOperation3 * 避免实现多余的方法 */ public class Adapter implements Target { private Adaptee adaptee; public Adapter(Adaptee adaptee) { this.adaptee = adaptee; } @Override public void serviceOperation1() { this.adaptee.serviceOperation1(); } @Override public void serviceOperation2() { } @Override public void serviceOperation3() { } }

抽象类实现适配器:

package adapter; public interface AbstractService { void serviceOperation1(); void serviceOperation2(); void serviceOperation3(); }

抽象类实现接口(适配器类):

package adapter; public abstract class AbstractAdapter implements AbstractService{ @Override public void serviceOperation1() { } @Override public void serviceOperation2() { } @Override public void serviceOperation3() { } }

业务实现类:

package adapter; public class AbstractServiceImpl extends AbstractAdapter { @Override public void serviceOperation1() { } }

 

package adapter;/** * 只需要实现 serviceOperation2、serviceOperation3 * 避免实现多余的方法 */public class Adapter implements Target {private Adaptee adaptee; public Adapter(Adaptee adaptee) {this.adaptee = adaptee;}@Overridepublic void serviceOperation1() {this.adaptee.serviceOperation1();}@Overridepublic void serviceOperation2() { }@Overridepublic void serviceOperation3() { }}
最新回复(0)