`
yaoweinan
  • 浏览: 137539 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

适配器模式(Adapter Pattern)

阅读更多

 

适配器模式是就和现实一个样子,给你一个电脑适配器,它就能提供给你一个电源使用的稳定电压,不管外界是多少F,它的输出电压是不变的。

 

适配器模式分为4个部分
1.功能适配器(定义必须要用接口)

2.对象适配器(进行转换)

3.目标适配对象

4.源适配对象

 

如图,使用适配器之后,系统对待外来数据和内部数据没啥两样不用做任何更改。




 
下面就以抓取度娘和谷哥的网页数据来牛刀小试一把。

IHtml 类适配器

BaiduHtmlAdapter、GoogleHtmlAdapter 对象适配器

Html 目标适配对象

BaiduHtml、GoogleHtml 源适配对象

IHtml

 

package j2se.pattern;

/**
 * class Adapter
 * @author Lyon Yao
 *
 */
public interface IHtml {

	public abstract String getTitle();

	public abstract String getBody();

}

 

 
Html

 

package j2se.pattern;

/**
 * target object
 * @author Lyon Yao
 *
 */
public class Html implements IHtml {
	private String title;
	private String body;
	/* (non-Javadoc)
	 * @see j2se.pattern.IHtml#getTitle()
	 */
	@Override
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	/* (non-Javadoc)
	 * @see j2se.pattern.IHtml#getBody()
	 */
	@Override
	public String getBody() {
		return body;
	}
	public void setBody(String body) {
		this.body = body;
	}
	
}

 

 GoogleHtml 

 

package j2se.pattern;

import java.util.HashMap;

/**
 * source object
 * @author Lyon Yao
 *
 */
public class GoogleHtml {
	protected HashMap<String, Object> data=new HashMap<String, Object>();
	
	public void setTitle(String title){
		data.put("title",title);
	}
	
	public void setBody(String body){
		 data.put("body",body);
	}
}

 

 BaiduHtml

 

package j2se.pattern;


/**
 * source object
 * @author Lyon Yao
 *
 */
public class BaiduHtml {
	protected String[] data=new String[2];
	
	public void setTitle(String title){
		data[0]=title;
	}
	
	public void setBody(String body){
		data[1]=body;
	}
}

 

 
GoogleHtmlAdapter

 

package j2se.pattern;

/**
 * object Adapter
 * @author Lyon Yao
 *
 */
public class GoogleHtmlAdapter extends GoogleHtml implements IHtml {

	public GoogleHtmlAdapter(GoogleHtml googleHtml) {
		// TODO Auto-generated constructor stub
		super.data=googleHtml.data;
	}

	@Override
	public String getTitle() {
		// TODO Auto-generated method stub
		return super.data.get("title").toString();
	}

	@Override
	public String getBody() {
		// TODO Auto-generated method stub
		return super.data.get("body").toString();
	}

}

 

 BaiduHtmlAdapter

 

package j2se.pattern;

/**
 * object Adapter
 * @author Lyon Yao
 *
 */
public class BaiduHtmlAdapter extends BaiduHtml implements IHtml{

	public BaiduHtmlAdapter(BaiduHtml baiduHtml) {
		// TODO Auto-generated constructor stub
		super.data=baiduHtml.data;
	}

	@Override
	public String getTitle() {
		// TODO Auto-generated method stub
		return super.data[0];
	}

	@Override
	public String getBody() {
		// TODO Auto-generated method stub
		return super.data[1];
	}
	
}

 

 
App

 

package j2se.pattern;

import java.util.ArrayList;

/**
 * Client
 * @author Lyon Yao
 *
 */
public class App {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		java.util.List<IHtml> list=new ArrayList<IHtml>(0);
		Html html=new Html();
		html.setTitle("this is our html");
		
		list.add(html);
		
		GoogleHtml googleHtml=new GoogleHtml();
		googleHtml.setTitle("this is googleHtml");
		GoogleHtmlAdapter googleHtmlAdapter=new GoogleHtmlAdapter(googleHtml);
		list.add(googleHtmlAdapter);
		

		BaiduHtml baiduHtml=new BaiduHtml();
		baiduHtml.setTitle("this is baiduHtml");
		
		BaiduHtmlAdapter baiduHtmlAdapter=new BaiduHtmlAdapter( baiduHtml);
		list.add(baiduHtmlAdapter);
		
		
		for(IHtml iHtml:list){
			System.out.println(iHtml.getTitle());
		}
		
	}

}

 


呵呵,大功告成,运行一下看看是不是没有什么问题吧?我们的App只抓title  没做任何更改。

 

 

  • 大小: 12.3 KB
分享到:
评论

相关推荐

    c++-设计模式之适配器模式(Adapter Pattern)

    适配器模式(Adapter Pattern)是一种结构型设计模式,它允许将一个接口转换为客户端期望的另一个接口。适配器模式常用于解决由于接口不兼容而无法正常工作的类之间的协作问题。 适配器模式的组成 目标接口(Target...

    设计模式之适配器模式(Adapter Pattern)

    3. 适配器(Adapter):实现了目标接口,并持有对适配者的引用,负责将适配者接口转换为客户期望的目标接口。 适配器模式的优点: 1. 增强了类的复用性,可以利用已有的类进行扩展,而不必修改原有代码。 2. 提高了...

    设计模式 之 “适配器模式[Adapter Pattern]”

    适配器模式(Adapter Pattern)是软件设计模式中的一种,其主要目的是使两个不兼容的接口之间能够协同工作。在IT行业中,我们经常遇到不同系统、库或组件之间的接口不一致,导致它们无法直接交互。适配器模式就提供...

    Head First 设计模式 (七) 适配器模式(Adapter pattern) C++实现

    适配器模式(Adapter pattern)是软件设计模式中的一种,其主要目的是解决系统间接口不兼容的问题,使得原本无法直接协作的类或者组件能够协同工作。在“Head First 设计模式”这本书中,适配器模式被深入浅出地讲解...

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

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

    Java24种设计模式,Java24种设计模式,24种设计模式,学会了这24种设计模式,可以打遍天下无敌手,设计模式非常重要

    8、适配器模式ADAPTER PATTERN 9、模板方法模式TEMPLATE METHOD PATTERN 10、建造者模式BUILDER PATTERN 11、桥梁模式BRIDGE PATTERN 12、命令模式COMMAND PATTERN 13、装饰模式DECORATOR PATTERN 14、迭代器模式...

    适配器模式(Adapter Pattern)原理图

    - **Adapter(适配器)**:这是实现目标接口并含有适配者实例的类。适配器的作用是将适配者的接口转换为目标接口。 2. **工作原理**: - 适配器模式通过引入一个中间层即适配器来解决两个不同接口之间的兼容性问题...

    适配器模式adapter,含源码下载

    适配器模式(Adapter Pattern)是一种结构型设计模式,它能将两个不兼容的接口连接在一起,使得原本由于接口不匹配而无法一起工作的类能够协同工作。在IT行业中,适配器模式广泛应用在系统集成、组件重用以及解决...

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

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

    java设计模式之适配器模式

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

    Java开发适配器模式详解

    适配器模式(Adapter Pattern)是一种常用的设计模式,其主要目的是让两个不兼容的接口能够协同工作。通过引入一个适配器,可以将现有类的接口转换成客户端期望的另一个接口,从而使原本由于接口不兼容而不能一起工作...

    适配器模式

    适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个...

    设计模式之适配器Adapter

    标题“设计模式之适配器Adapter”暗示我们将深入探讨适配器模式的核心概念和应用场景。适配器模式通常应用于以下场景: 1. 当系统中存在一个已经存在的类,其接口不符合新需求时,可以使用适配器模式来调整接口,使...

    Java设计模式之适配器模式

    这时,适配器模式(Adapter Pattern)便能派上用场。适配器模式是一种结构型设计模式,它允许两个不兼容的接口能够协同工作。本文将深入探讨适配器模式的原理、分类以及在Java中的实现方式。 #### 适配器模式的基本...

    Java设计模式适配器模式代码架构

    Java设计模式中的适配器模式(Adapter Pattern)是一种结构型设计模式,它的主要目的是将不兼容的接口转换为用户期望的接口,使原本由于接口不兼容而无法一起工作的类能够协同工作。适配器模式有两种形式:类适配器...

    设计模式之适配器模式与外观模式demo

    适配器模式(Adapter Pattern)的主要目的是将两个不兼容的接口融合在一起,使得原本不能协同工作的类能够一起工作。这种模式通常在我们需要使用一个已有类,但其接口不符合我们的需求时使用。适配器模式包含三个...

    .NET设计模式(8):适配器模式(AdapterPattern)

    ### .NET设计模式(8):适配器模式(AdapterPattern) #### 概述 在软件工程领域,尤其是在.NET框架下的应用开发过程中,经常会遇到这样的情况:现有的某个类或者组件的功能非常优秀,但由于其接口与当前项目的...

    深入浅出设计模式之适配器模式与外观模式

    **定义**:适配器模式(Adapter Pattern)是一种结构型设计模式,允许不兼容的接口协同工作。该模式涉及到一个包含现有类的接口转换到客户端希望使用的另一个接口的对象。适配器模式使得原本由于接口不兼容而不能一起...

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

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

Global site tag (gtag.js) - Google Analytics