首页 > 编程语言 >浅谈PHP设计模式的迭代器模式

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

时间:2022-11-10 01:11:07浏览次数:45  
标签:function index PHP 浅谈 迭代 iterator 设计模式 data public

简介:

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

适用场景:

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

优点:

学习意义远大于实际意义。

缺点:

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

代码:

//声明一个迭代器类,并实现内置的迭代器接口
class MyIterator implements \Iterator {
    private $data;
    private $index;


    //初始化数据
    public function __construct($data) {
        $this->data = $data;
        $this->index = 0;
    }


    //获取当前数据
    public function current() {
        return $this->data[$this->index] ?? null;
    }


    //移动指针
    public function next() {
        ++ $this->index;
    }


    //获取当前位置
    public function key() {
        return $this->index;
    }


    //通过数量判断指针的位置是否合法
    public function valid() {
        return $this->index < count($this->data);
    }


    //重置指针到开始位置
    public function rewind() {
        $this->data = 0;
    }
}

//调用端================================================================
//是可以通过一些PHP数组的方式去迭代关联数组,不过确实永不上
$my_iterator = new MyIterator(['one', 'two', 'three', 'four', 'five']);
while($my_iterator->valid()) {
    echo $my_iterator->current() . PHP_EOL;
    $my_iterator->next();
}
$my_iterator->rewind();

标签:function,index,PHP,浅谈,迭代,iterator,设计模式,data,public
From: https://www.cnblogs.com/phpphp/p/16875731.html

相关文章

  • 使用phpstudy搭建gitee开源项目[勾股dev]
    前段时间公司一直要求进行只是梳理,整合,想着做一套知识管理系统,在gitee上找到了一个开源的项目管理系统,带的有知识库管理子系统,索性就拿来使用了;gitee地址  https://git......
  • 设计模式---责任链模式
    简述将各个功能拆分后分别封装(各功能解耦),需要时可自由组合(包括执行顺序)话不多说,看个优化案例吧。优化案例最初版以下是模拟客户端想服务端发送请求的业务流程。......
  • 软件设计模式白话文系列(五)建造者模式
    1、描述将一个对象的构造过程进行封装,并按照一定顺序进行构造。通俗的讲,假如要创建电脑的对象,那么各个实例的属性不同,也就是电脑的配置各不相同.这个时候可以考虑用构......
  • 进入python的世界_day30_python基础—— 单例设计模式、pickle模块、选课系统初步搭建
    一、面向对象——单例模式代码实操​ 方法有很多,其实就是定制产生类,或者产生对象1.基于双下new,控制实例化对象的条件classMyClass:_instance=Nonedef_......
  • HeadFirst设计模式-装饰者模式
     C++代码#pragmaonce#include<string>usingstd::string;classBeverage{public:Beverage(){}virtual~Beverage(){}......
  • 浅谈PHP设计模式的命令模式
    简介:命令模式,又称之为动作模式或者事务模式,属于行为型的设计模式。将不同的请求封装成不同的请求对象,以便使用不同的请求;角色都会用饭馆来举例子:命令下达者:顾客命令......
  • 设计模式利剑三--抽象工厂方法模型
    定   义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类优   点:           1、封装性,每个产品的实现类不是高层模块要关心的,他们......
  • 设计模式利剑4-模板方法模式
    定   义:定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤优   点:            1......
  • 设计模式利剑5-建造者模式
    定   义:将一个复杂对象的构建于它的表示分离,使得同样的构建过程可以创建不同的表示优   点:            1、封装性            2、建造者......
  • 设计模式利剑15-组合模式
    定     义:将对象组合成树形结构以表示“整体-部分”的层次结构,使得用户对单个对象和组合对象的使用具有一致性优     点:              1、高层......