适配器模式

本文详细介绍了适配器模式的概念及其实现方式,包括类的适配器模式、对象的适配器模式以及接口的适配器模式。通过具体代码示例展示了如何解决接口不匹配导致的兼容性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

适配器模式

       概念: 适配器模式是将某个类的接口换成客户端期望的另一个接口表示,目的是消除由于接口不匹配而导致的兼容性的问题.


1、类的适配器模式

1.1 源类

public class Source {
	public void method1(){
		System.out.println("This is original method.");
	}
}
1.2 要实现的接口
public interface Targetable {
	// 与源类中的方法相同
	public void method1();
	// 新类的方法
    public void method2();
}
1.3 类Adapter继承于类Source,实现Targetable接口
public class Adapter extends Source implements Targetable{
	public void method2(){
		System.out.println("This is the targetable method.");
	}
}

1.4 主测试函数的实现

public class AdapterTest {
	public static void main(String[] args){
		Targetable target = new Adapter();
		target.method1();
		target.method2();
	}
}

1.5 结果展示:



2、对象的适配器模式

2.1 源

public class Source {
	public void method1(){
		System.out.println("This is original method.");
	}
}
2.2 要实现的接口
public interface Targetable {
	// 与源类中的方法相同
	public void method1();
	// 新类的方法
    public void method2();
}

2.3 Wrapper实现接口Targetable

public class Wrapper implements Targetable{
	private Source source;
	
	public Wrapper(Source source){
		super();
		this.source = source;
	}
	
	@Override
	public void method2(){
		System.out.println("This is the targetable method.");
	}
	
	@Override
	public void method1(){
		source.method1();
	}

}
2.4主测试函数
public class AdapterTest {
	public static void main(String[] args){
		Source source = new Source();
		Targetable target = new Wrapper(source);
		target.method1();
		target.method2();
	}
}

2.5 结果展示


3、接口的适配器

3.1 创建一个接口

public interface Sourceable {
	// 定义两个方法
	public void method1();
	public void method2();
}

3.2 用虚方法创建这个接口的实现

public abstract class Wrapper2 implements Sourceable{
	// 实现Sourceable中的方法
	public void method1(){}
	public void method2(){}
}

3.3 利用类的继承重写虚方法

public class SourceSub1 extends Wrapper2{
    public void method1(){
        System.out.println("The sourceable interface's first sub1.");
    }
}

public class SourceSub2 extends Wrapper2{
	public void method2(){
		System.out.println("The sourceable interface's second sub2.");
	}
}

3.4 主测试函数

public class AdapterTest {
	public static void main(String[] args){
		Sourceable source1 = new SourceSub1();
		Sourceable source2 = new SourceSub2();
		
		// 只有1和4的结果打印出来
		System.out.println(1);
		source1.method1();
		System.out.println(2);
		source1.method2();
		System.out.println(3);
		source2.method1();
		System.out.println(4);
		source2.method2();

	}
}
3.5 结果展示

类的适配器模式: 若希望将一个类转换成满足另一个接口的类时,可以使用类的适配器模式,创建一个类,继承原有的新类,继承原有的类,实现新的接口即可.


对象的适配器模式: 当希望将一个对象转换成满足另一个新接口的对象时,可以创建一个Wrapper类,持有原类的一个实例, 在Wrapper类的方法中,调用实例的方法就行.


接口的适配器模式: 当不希望实现一个接口中的所有方法时,可以创建一个抽象类Wrapper, 实现所有方法,我们写别的类时候,抽象继承类即可.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值