目录一、关于适配器模式二、设计要求三、设计实现1.目标2.被适配者3.适配器四、应用程序五、执行结果一、关于适配器模式设计模式8、适配器模式包装器_适配器模式的剩余适配-CSDN博客二、设计要求目前有一个运行良好系统该系统中有一个类BookNameList。BookNameList类使用Vector存放图书名称但为用户提供的是Vector的枚举器用户可以使用该枚举器查看Vector中存放的图书名称。目前一个开发小组正在设计一个新的系统根据项目的特点该系统准备在一个NewBookNameList类中使用LinkedList存放图书名称但为了缩短开发周期开发小组决定将已有系统中的图书名称导入到当前新系统中。请使用适配器模式实现开发小组的目的。三、设计实现针对上述问题使用适配器模式设计若干个类1.目标本问题中目标接口是java.util包中的Iterator。2.被适配者本问题中被适配者是java.tuil包中的Enumeration。3.适配器适配器实现目标接口Iterator并包含被适配者的引用Enumeration,代码如下package xyz.jangle.design.app.adapter; import java.util.Enumeration; import java.util.Iterator; /** * 适配器 * author jangle * email janglejangle.xyz * time 2026年10月14日 上午7:49:02 * */ public class IteratorAdapter implements IteratorString { private EnumerationString bookenum; public IteratorAdapter(EnumerationString bookenum) { super(); this.bookenum bookenum; } Override public boolean hasNext() { return bookenum.hasMoreElements(); } Override public String next() { return bookenum.nextElement(); } }四、应用程序原系统BookNameList类package xyz.jangle.design.app.adapter; import java.util.Enumeration; import java.util.Vector; /** * 原系统 * author jangle * email janglejangle.xyz * time 2026年10月14日 上午7:52:06 * */ public class BookNameList { private VectorString vector; // private Enumeration? bookenum; public BookNameList() { vector new VectorString(); } public void setBookName() { vector.add(JAVA 程序设计); vector.add(J2ME 程序设计); vector.add(XML 程序设计); vector.add(JSP 程序设计); } public EnumerationString getEnumeration() { return vector.elements(); } }新系统NewBookNameList类package xyz.jangle.design.app.adapter; import java.util.Iterator; import java.util.LinkedList; /** * 新系统 * author jangle * email janglejangle.xyz * time 2026年10月14日 上午7:56:12 * */ public class NewBookNameList { private LinkedListString bookList; private IteratorString iterator; public NewBookNameList(IteratorString iterator) { super(); this.iterator iterator; bookList new LinkedListString(); } public void setBookName() { while(iterator.hasNext()) { String name iterator.next(); bookList.add(name); } } public void getBookName() { for(String name : bookList) { System.out.println(name); } // IteratorString iter bookList.iterator(); // while(iter.hasNext()) { // System.out.println(iter.next()); // } } }运行类package xyz.jangle.design.app.adapter; import java.util.Enumeration; /** * 适配器模式应用举例 * author jangle * email janglejangle.xyz * time 2026年10月14日 上午8:08:41 * */ public class Application { public static void main(String[] args) { BookNameList oldBookList new BookNameList(); oldBookList.setBookName(); // 获取图书列表 EnumerationString enumeration oldBookList.getEnumeration(); // 获取图书列表的枚举器 IteratorAdapter adapter new IteratorAdapter(enumeration); // 通过枚举器构造适配器对象 NewBookNameList newBookList new NewBookNameList(adapter); // 使用适配器构建新系统 newBookList.setBookName(); // 通过适配器获取旧系统的图书信息 System.out.println(导入到新系统中的图书列表); newBookList.getBookName(); // 打印新系统的图书信息 } }五、执行结果
阅读完成 · 觉得有帮助?