`

使用Adapter(适配器)模式兼容原本不兼容

阅读更多
这个模式有些模糊,作用就是匹配二者不同,其实通过修改代码可以更简洁的实现修改,但是问题出在如果不能修改代码的时候,我们应该怎么办?

先看看代码,首先是2个接口:

package moshi.adapter;

public interface SayGood {

	public void sayGood();
	
}


package moshi.adapter;

public interface SayHello {

	public void sayHello();
	
}


一个Hello,一个Good。下面2个代码分别实现它们:

package moshi.adapter;

public class SayGoodImp implements SayGood {

	public void sayGood() {
		System.out.println("Goog");

	}

}


package moshi.adapter;

public class SayHelloImp implements SayHello {

	public void sayHello() {
		System.out.println("Hello");
	}

}


怎么样让SayGood里也能说sayHello?我们可以改代码。

package moshi.adapter;

public class SayGoodImp implements SayGood,SayHello{

	public void sayGood() {
		System.out.println("Goog");

	}

	public void sayHello() {
		System.out.println("Hello");
		
	}

}


我们让这个类实现这2个接口,问题解决,但是如果强制我们不修改SayGoodImp类的代码怎么办?我们就不能实现SayHello这个接口了。我们只能写个Adapter(适配器)。

package moshi.adapter;

public class SayGoodApapter implements SayHello {

	//定义SayHello引用
	private SayHello sayHello;
	
	//进行初始化注入
	public SayGoodApapter(SayHello sayHello){
		this.sayHello=sayHello;
	}
	//转移依赖性
	public void sayHello() {
		sayHello.sayHello();
	}
	
}


哈哈,其实也就是变相的改代码。转移一下依赖性。OK,看看怎么使用:

package moshi.adapter;

public class TestSayGood {

	public static void main(String[] args) {
		
		SayGoodApapter SayGoodApapter=new SayGoodApapter(new SayHelloImp());
		SayGoodApapter.sayHello();
	
	}

}


呵呵,把SayHello注入到SayGoodApapter类中。这个时候SayGood也能说声SayHello了。你还费解不?


分享到:
评论

相关推荐

    java 汽车适配器(Adapter适配器模式)

    适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在Java中,适配器模式被广泛应用于解决系统间的兼容性问题,尤其是当我们需要将一个已有的类库或者对象与我们的系统接口相匹配时。汽车适配器的...

    Adapter 适配器

    在软件设计模式中,Adapter(适配器)模式是一种常用的设计模式,它的主要作用是将两个不兼容的接口之间进行适配,使得原本无法协同工作的类可以一起工作。适配器模式可以分为类适配器模式和对象适配器模式。在这里...

    Adapter(适配器模式)

    适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在软件工程中,当系统中存在已有的类或库,而我们希望使用它们的功能,但其接口与我们的需求不匹配时,适配器模式就显得尤为重要。通过适配器,...

    java设计模式之适配器模式

    适配器模式(Adapter Pattern)是通过创建一个新的对象(适配器),这个对象将原本不兼容的对象接口转换为客户端期望的接口,从而使两者能够协同工作。适配器模式可以分为类适配器和对象适配器两种类型。 1. 类...

    设计模式C++学习之适配器模式(Adapter)

    适配器模式(Adapter)是软件工程中一种常用的设计模式,它允许两个不兼容的接口之间进行通信。在C++编程中,适配器模式能够帮助我们复用现有的类,或者将第三方库的接口与我们的系统接口进行对接,从而提高代码的可...

    C#面向对象设计模式纵横谈(7):Adapter 适配器模式(结构型模式) (Level 300)

    适配器模式是一种在软件设计中广泛使用的结构型设计模式,它允许两个不兼容的接口之间进行通信。在C#编程环境中,适配器模式扮演着重要的角色,尤其是在需要将已有类库或组件与新系统集成时。适配器模式通过创建一个...

    设计模式 - 适配器模式(C++实例)

    适配器模式的核心思想是将一个类的接口转换成客户希望的另一个接口,使原本由于接口不兼容而无法一起工作的类能够协同工作。 在C++中,适配器模式主要有两种实现方式:类适配器和对象适配器。类适配器模式是通过...

    适配器(Adapter)模式

    适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在软件工程中,当系统中存在两种不兼容的接口或者类需要协同工作时,适配器模式可以发挥关键作用。通过适配器,我们可以复用现有的类,而无需...

    设计模式之适配器模式

    适配器模式的核心思想是将一个类的接口转换成客户希望的另一个接口,使原本由于接口不兼容而无法一起工作的类能够协同工作。 在Java中,适配器模式主要分为两种类型:类适配器模式和对象适配器模式。类适配器模式...

    设计模式——适配器模式(adapter)

    适配器模式(Adapter Pattern)是软件设计模式中的一种,其主要目的是解决系统中的接口不兼容问题,使得原本由于接口不匹配而无法一起工作的类能够协同工作。在本文中,我们将深入探讨适配器模式的概念、结构、作用...

    设计模式之适配器模式Java实现和类设计图

    适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,允许不兼容的接口之间进行通信。在这个Java实现中,我们将深入探讨适配器模式的两大类型:类适配器模式和对象适配器模式,并通过具体的代码示例和...

    Adapter适配器模式在JavaScript设计模式编程中的运用分析_.docx

    适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在JavaScript编程中,这种模式尤其适用于处理不同API之间的兼容性问题,比如在AJAX请求中,需要对接不同的日志记录系统,或者整合第三方库时。...

    适配器模式demo源码

    适配器模式的核心思想是将一个类的接口转换成客户期望的另一个接口,使得原本由于接口不兼容而不能一起工作的类可以协同工作。在Java或其他面向对象语言中,适配器模式通常有两种形式:类适配器和对象适配器。 1. ...

    适配器模式

    对象适配器模式是通过组合一个对象来完成适配工作的,它不使用继承关系,而是通过聚合关系来实现。对象适配器模式通过创建一个适配器类,然后在这个类里面使用被适配对象的一个实例,并在这个实例上应用被适配对象的...

    java中适配器模式案例

    适配器模式是一种设计模式,它允许不兼容的类或接口之间进行通信,通过创建一个适配器类作为中间桥梁,使得原本不匹配的接口能够协同工作。在Java中,适配器模式广泛应用于系统集成、旧代码复用以及第三方库的兼容性...

    Python 程序语言设计模式思路-结构型模式:适配器模式-将不兼容的接口转换为可兼容的接口

    适配器模式(Adapter Pattern)是一种结构型设计模式,旨在将一个类的接口转换为客户端期望的另一个接口,从而使原本由于接口不兼容而无法一起工作的类能够协同工作。适配器模式通过引入一个适配器类,解决了接口不...

Global site tag (gtag.js) - Google Analytics