标签:INFO 00 06 8081 迭代 30 设计模式 CarsList 徒手
概念
迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。
迭代器模式属于行为型模式。
参考链接: https://www.runoob.com/design-pattern/iterator-pattern.html
代码案例
设计迭代器接口,有两个方法hasNext,next
/** * 迭代器类 */ public interface Iterator { boolean hasNext(); Object next(); }
容器接口,获取迭代器
/** * 容器类 */ public interface Container { Iterator getIterator(); }
集合容器,内部类实现迭代器功能
/** * 车子集合,提供迭代器功能 */ @Slf4j public class CarsList implements Container { private String[] carsArr; public CarsList(String[] carsArr) { this.carsArr = carsArr; } @Override public Iterator getIterator() { return new CarsIterator(); } private class CarsIterator implements Iterator{ int index; @Override public boolean hasNext() { if (index<carsArr.length){ log.info("carsArr has next "); return true; } return false; } @Override public Object next() { if (this.hasNext()){ String perCars = carsArr[index++]; log.info("current cars is : {}",perCars); return perCars; } return null; } } }
测试主类
/** * 设计模式控制器 */ @RestController @RequestMapping("/designPattern") @Slf4j public class DesignController { @PostMapping("/iterator") public ResponseModel iterator(@RequestBody String[] carsArr) { log.info("iterator ---- start "); List list= new ArrayList(); CarsList carsList = new CarsList(carsArr); Iterator iterator = carsList.getIterator(); while (iterator.hasNext()){ String perCars = (String) iterator.next(); list.add(perCars); } log.info("iterator ---- end "); return new ResponseModel("命令模式完成", 200, list); } }
测试案例
2022-06-30 00:49:12.128 INFO iterator ---- start 【http-nio-8081-exec-1】【DesignController:75】 2022-06-30 00:49:12.133 INFO carsArr has next 【http-nio-8081-exec-1】【CarsList:29】 2022-06-30 00:49:12.133 INFO carsArr has next 【http-nio-8081-exec-1】【CarsList:29】 2022-06-30 00:49:12.134 INFO current cars is : BMW 【http-nio-8081-exec-1】【CarsList:39】 2022-06-30 00:49:12.134 INFO carsArr has next 【http-nio-8081-exec-1】【CarsList:29】 2022-06-30 00:49:12.134 INFO carsArr has next 【http-nio-8081-exec-1】【CarsList:29】 2022-06-30 00:49:12.134 INFO current cars is : Giant 【http-nio-8081-exec-1】【CarsList:39】 2022-06-30 00:49:12.134 INFO carsArr has next 【http-nio-8081-exec-1】【CarsList:29】 2022-06-30 00:49:12.135 INFO carsArr has next 【http-nio-8081-exec-1】【CarsList:29】 2022-06-30 00:49:12.138 INFO current cars is : Benz 【http-nio-8081-exec-1】【CarsList:39】 2022-06-30 00:49:12.138 INFO carsArr has next 【http-nio-8081-exec-1】【CarsList:29】 2022-06-30 00:49:12.138 INFO carsArr has next 【http-nio-8081-exec-1】【CarsList:29】 2022-06-30 00:49:12.139 INFO current cars is : Merida 【http-nio-8081-exec-1】【CarsList:39】 2022-06-30 00:49:12.139 INFO iterator ---- end 【http-nio-8081-exec-1】【DesignController:83】
标签:INFO,00,06,8081,迭代,30,设计模式,CarsList,徒手 来源: https://www.cnblogs.com/hikoukay/p/16425444.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。