您的位置:首页 > 编程语言 > Java开发

Java设计模式————适配器模式

2014-03-26 12:01 183 查看
适配器模式(别名:包装器)

将一个类的接口转换成客户希望的另外一个借口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

目标(Target):目标是一个类,该接口是客户想使用的接口。

被适配者(Adaptee):被适配者是一个已经存在的接口或抽象类,这个接口或抽象类需要适配。

适配器(Adapter):适配器是一个类,该类实现了目标接口并包含有被被适配者的引用,即适配器的职责是对被适配者接口(抽象类)与目标接口进行适配。

一个实例

适配器代码:

package com.AdapterPattern;

import java.util.Enumeration;

import java.util.Iterator;

public class IteratorAdapter implements Iterator {

Enumeration bookenum;

IteratorAdapter(Enumeration bookenum)

{

this.bookenum = bookenum;

}

@Override

public boolean hasNext() {

return bookenum.hasMoreElements();

}

@Override

public Object next() {

return bookenum.nextElement();

}

@Override

public void remove(){

System.out.println("枚举器没有删除集合元素的方法!");

}

}

package com.AdapterPattern;

import java.util.Enumeration;

import java.util.Vector;

public class BookNameList {

private Vector<String> vector;

private Enumeration bookenum;

public BookNameList() {

vector = new Vector<String>();

}

public void setBookName(){

vector.add("Java 程序设计");

vector.add("J2ME程序设计");

vector.add("XML程序设计");

vector.add("JSP程序设计");

}

public Enumeration getEnumeration(){

return vector.elements();

}

}

package com.AdapterPattern;

import java.util.Iterator;

import java.util.LinkedList;

public class NewBookNameList {

LinkedList<String> booklist;

Iterator iterator;

public NewBookNameList(Iterator iterator) {

booklist = new LinkedList<String>();

this.iterator = iterator;

}

public void setBookName(){

while(iterator.hasNext()){

String name = (String) iterator.next();

booklist.add(name);

}

}

public void getBookNmae(){

Iterator<String> iter = booklist.iterator();

while(iter.hasNext()){

String name = iter.next();

System.out.println(name);

}

}

}

package com.AdapterPattern;

import java.util.Enumeration;

public class Application {

public static void main(String args[]){

BookNameList oldBookList = new BookNameList();

oldBookList.setBookName();

Enumeration bookenum = oldBookList.getEnumeration();

IteratorAdapter adapter = new IteratorAdapter(bookenum);

NewBookNameList newBookList = new NewBookNameList(adapter);

newBookList.setBookName();

System.out.println("导入到新系统中的图书列表");

newBookList.getBookNmae();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: