`
yaoweinan
  • 浏览: 132445 次
  • 性别: 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
分享到:
评论

相关推荐

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

    设计模式之适配器模式(Adapter Pattern) 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

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

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

    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 Pattern) 是作为两个不兼容接口之间的桥梁, 这种类型的设计模式属于结构型模式。 一些书籍也称适配器模式为缺省适配器模式(Default Adapter Pattern) 。 适配器模式主要分 为三类: 类...

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

    NULL 博文链接:https://lym6520.iteye.com/blog/713094

    适配器模式

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

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

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

    java设计模式之适配器模式

    java设计模式之适配器模式,希望对大家有所帮助。

    设计模式_适配器模式.zip

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

    设计模式之适配器模式C++实现

    用c++方法实现AdapterPattern模式

    Python设计模式之适配器模式原理与用法详解

    本文实例讲述了Python设计模式之...适配器模式(Adapter Pattern):将一个类的接口转换成为客户希望的另外一个接口.Adapter Pattern使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 应用场景:系统数据和

    C#版 24种设计模式

    适配器模式(Adapter Pattern) 提供者模式(Provider Pattern) 外观模式(Facade Pattern) 享元模式(Flyweight Pattern) 原型模式(Prototype Pattern) 责任链模式(Chain of Responsibility Pattern) 中介者模式...

    24种设计模式与6大设计原则

    适配器模式[ADAPTER PATTERN] 模板方法模式[TEMPLATE METHOD PATTERN] 建造者模式[BUILDER PATTERN] 策略模式 代理模式 单例模式 多例模式 工厂方法模式 抽象工厂模式 门面模式 适配器模式 模板方法模式 建造者模式...

    用Java实现23种设计模式

    适配器模式(Adapter Pattern) 桥接模式(Bridge Pattern) 过滤器模式(Filter、Criteria Pattern) 组合模式(Composite Pattern) 装饰器模式(Decorator Pattern) 外观模式(Facade Pattern) 享元模式...

    C#设计模式_设计模式_C#_

    适配器模式(Adapter Pattern) 7. 桥接模式(Bridge Pattern) 8. 装饰模式(Decorator Pattern) 9. 组合模式(Composite Pattern) 10. 外观模式(Facade Pattern) 11. 享元模式(Flyweight Pattern) 12. 代理模式...

    Java设计模式,并加上个人理解

    7. 适配器模式 (Adapter Pattern) 8. 模板方法模式 (Template Pattern) 9. 建造者模式 (Builder Pattern) 10. 原型模式 (Prototype Pattern) 11. 组合模式 (Composite Pattern) 12. 装饰者模式 ...

    C#设计模式(23种设计模式)

    适配器模式(Adapter Pattern) 7. 桥接模式(Bridge Pattern) 8. 装饰模式(Decorator Pattern) 9. 组合模式(Composite Pattern) 10. 外观模式(Facade Pattern) 11. 享元模式(Flyweight Pattern) 12. ...

    设计模式PPT

     适配器模式(Adapter Pattern)  桥接模式(Bridge Pattern)  组合模式(Composite Pattern)  装饰者模式(Decorator Pattern)  外观模式(Facade Pattern)  享元模式(Flyweight Pattern)  ...

Global site tag (gtag.js) - Google Analytics