`
jiq408694711
  • 浏览: 36585 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

结构型-适配器模式

 
阅读更多
package adapter;
/**
 * @author jiq
 * 类型:Structural
 * 定义: 适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器模式让原本
 * 		接口不兼容的类,现在可以合作无间。
 * 
 * OO原则:使用对象组合,以修改的接口来包装被适配者。 
 * 		我们绑定的是客户(使用适配器一方)和接口,而不是绑定客户和实现。
 * 
 * 与装饰器模式的区别: 适配器模式“将一个接口转换成另一个接口”,
 * 		而装饰器模式“不改变任何接口,而是加入新的责任”。
 * 
 * 分类: 对象适配器(如下实例),类适配器(不常用)
 * 
 * 另外一个改变接口的模式: Facade(外观)模式,但是它改变接口的原因是为了简化接口。
 * 
 * 代码说明: 我有一个显示器Monitor,是用来显示图形的,它只能接收来自图形发送设备
 * 		GrapTransmitter的信号,但是我现在只有一个CPU,他所能产生的数据无法被显示器
 * 		识别,即这两个设备不是兼容的。 这个时候我们就需要一个图形适配器GrapAdapter,
 * 		能够将CPU适配于显示器。
 */
//显示器
class Monitor{
	GrapTransmitter gt;
	public Monitor(GrapTransmitter gt){
		this.gt = gt;
	}
	//显示图形发送设备发送过来的图形数据
	public void showGrap(){
		System.out.println(gt.getGrapData());
	}
}

//图形发送设备
class GrapTransmitter{
	public String getGrapData(){
		return "grap Content";
	}
}

//现在我只有一个CPU
class CPU{
	//只能产生CPU数据
	public int getCpuData(){
		return 10;
	}
}

/**
 * 我们需要一个图形适配器,继承某一方(如这里GrapTransmitter),
 * 同时内部包含一个被适配的类(CPU),通过重写其父类的方法来进行适配。
 * */
class GrapAdapter extends GrapTransmitter{
	private CPU cpu;	//组合被适配的类
	public GrapAdapter(CPU cpu){
		this.cpu = cpu;
	}
	
	//重写父类的接口
	public String getGrapData(){
		return String.valueOf(cpu.getCpuData());
	}
}

public class Adapter {
	public static void main(String[] args) {
		
		//用图形适配器包装CPU,转换成显示器期望的图形发送设备
		GrapTransmitter gt = new GrapAdapter(new CPU());
		
		//利用该图形发送设备创建一个显示器
		Monitor monitor = new Monitor(gt);
		monitor.showGrap();
	}
}/**
 * output: 10
 */


分享到:
评论

相关推荐

    设计模式:结构型-适配器模式

    适配器模式是一种结构型设计模式,用于解决两个不兼容接口之间的问题,它充当了两者之间的桥梁。适配器模式可以分为三种类型:类适配器模式、对象适配器模式和接口适配器模式。 类适配器模式中,适配器类通过继承...

    JAVA-设计模式-结构型模式-适配器模式

    JAVA-设计模式-结构型模式-适配器模式

    c++设计模式-结构型模式-适配器模式

    c++设计模式-结构型模式-适配器模式,其他工程,c++源码。适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。

    设计模式结构型-适配器

    **适配器模式**(Adapter Pattern)属于结构型设计模式,它的目的是将一个接口转换成客户希望的另一个接口,从而使得原本由于接口不兼容而无法一起工作的那些类能够合作。适配器模式有两种形式:类适配器模式和对象...

    设计模式-适配器模式

    适配器模式是一种在软件设计中广泛使用的结构型设计模式,它的主要目的是解决不同接口或类之间不兼容的问题,使得原本无法协同工作的组件能够协同工作。在这个“设计模式-适配器模式”的资源中,我们可以深入理解...

    java常用设计模式-适配器模式

    适配器模式(Adapter Pattern)是一种结构型设计模式,它允许不兼容的接口之间进行通信。这种模式可以在不修改现有代码的情况下重用现有类,并且可以使不兼容的接口之间进行通信。 适配器模式的定义 适配器模式是...

    设计模式实验报告-适配器模式.docx

    适配器模式(Adapter Pattern)是一种结构型设计模式,其主要目的是将一个类的接口变换成客户端所期待的另一种接口。通过这种方式,原本由于接口不兼容而无法一起工作的类可以顺利合作。适配器模式有两种实现方式:...

    PHP5设计模式-适配器模式实现

    适配器模式是一种结构型设计模式,它的主要目的是使不兼容的接口能够协同工作。在实际开发中,我们可能会遇到这样的情况:一个类库或者服务提供了一个接口,而我们的代码需要使用另一个接口。适配器模式就充当了两者...

    无标题设计模式-适配器模式

    适配器模式是一种设计模式,属于结构型模式,它的主要目的是解决接口不兼容的问题,使得原本因接口不匹配而无法协作的类能够协同工作。适配器模式通过创建一个新的适配器类,将一个类的接口转换为客户期望的另一个...

    讲故事,学(Java)设计模式-适配器模式Java开发Ja

    适配器模式是一种结构型设计模式,它的主要目的是使不兼容的接口之间能够进行通信。在这个“讲故事,学(Java)设计模式—适配器模式”的主题中,我们将深入探讨这个模式的原理、应用和优势。 适配器模式的核心思想...

    【IT十八掌徐培成】Java基础第06天-05.匿名内部类-适配器模式.zip

    适配器模式是一种结构型设计模式,它的主要目的是解决不同接口之间的兼容性问题。在软件开发中,我们经常会遇到需要将一个类的接口转换为另一个接口的情况,这时适配器模式就能派上用场。适配器模式通过将不兼容的...

    [结构型模式] 适配器模式的理解

    适配器模式是一种结构型设计模式,它允许不兼容的接口之间进行通信,通过创建一个适配器对象作为中间桥梁,使得原本不匹配的接口能够协同工作。在软件开发中,适配器模式的应用十分广泛,尤其是在处理遗留系统或者...

    结构型模式之适配器模式

    适配器模式是一种在软件设计中广泛使用的结构型设计模式,它的主要目的是解决不同系统、类库或组件之间的接口不兼容问题,使原本无法协同工作的模块能够顺利地一起工作。适配器模式的核心思想是“转换”,通过创建一...

    设计模式 - 适配器

    适配器模式(Adapter Pattern)是一种结构型设计模式,它允许两个不兼容的接口之间进行通信。在实际应用中,我们常常遇到这样的情况:一个系统需要使用现有的类,但其接口与系统的需求不匹配。适配器模式能解决这种...

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

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

    PHP设计模式(五)适配器模式Adapter实例详解【结构型】

    适配器模式(Adapter Pattern)是一种结构型设计模式,它主要解决的是接口不兼容的问题,使得原本由于接口差异无法一起工作的类能够协同工作。在PHP中,适配器模式通过创建一个包装类(适配器类)来转换不兼容的接口...

    设计模式_结构型_适配器模式.md

    适配器模式是软件设计中的一种常用模式,属于结构型模式。其核心目的是解决两个已有接口之间不兼容的问题,使它们能够协同工作。适配器模式可以看作是软件开发中的“桥梁”或“转换器”,在不修改原有接口的基础上,...

    java设计模式之适配器模式

    适配器模式是一种在软件工程中广泛使用的结构型设计模式,它允许两个不兼容的接口之间进行通信。在Java中,适配器模式扮演着重要的角色,尤其在处理遗留代码或者第三方库集成时,能够有效地解决接口不匹配的问题。...

    JAVA设计模式(抽象类与适配器模式)

    适配器模式是一种结构型设计模式,它的主要作用是在不修改原有类的情况下,使两个接口不兼容的类能够协同工作。在Java中,适配器模式有两种形式:类适配器和对象适配器。类适配器模式通过继承目标接口和适配者类来...

Global site tag (gtag.js) - Google Analytics