翼度科技»论坛 编程开发 PHP 查看内容

浅谈PHP设计模式的迭代器模式

7

主题

7

帖子

21

积分

新手上路

Rank: 1

积分
21
简介:

迭代器模式,是行为型的设计模式。
提供一中方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。
适用场景:

除了学习,在PHP中几乎没有应用场景。
优点:

学习意义远大于实际意义。
缺点:

实际开发中几乎用不上,完全可以被更简单的foreach,或者是所用框架内置的遍历方案替代。
代码:

  1. //声明一个迭代器类,并实现内置的迭代器接口
  2. class MyIterator implements \Iterator {
  3.     private $data;
  4.     private $index;
  5.     //初始化数据
  6.     public function __construct($data) {
  7.         $this->data = $data;
  8.         $this->index = 0;
  9.     }
  10.     //获取当前数据
  11.     public function current() {
  12.         return $this->data[$this->index] ?? null;
  13.     }
  14.     //移动指针
  15.     public function next() {
  16.         ++ $this->index;
  17.     }
  18.     //获取当前位置
  19.     public function key() {
  20.         return $this->index;
  21.     }
  22.     //通过数量判断指针的位置是否合法
  23.     public function valid() {
  24.         return $this->index < count($this->data);
  25.     }
  26.     //重置指针到开始位置
  27.     public function rewind() {
  28.         $this->data = 0;
  29.     }
  30. }
  31. //调用端================================================================
  32. //是可以通过一些PHP数组的方式去迭代关联数组,不过确实永不上
  33. $my_iterator = new MyIterator(['one', 'two', 'three', 'four', 'five']);
  34. while($my_iterator->valid()) {
  35.     echo $my_iterator->current() . PHP_EOL;
  36.     $my_iterator->next();
  37. }
  38. $my_iterator->rewind();
复制代码
来源:https://www.cnblogs.com/phpphp/p/16875731.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具