• 设计模式之迭代器模式(PHP实现)


    github地址:https://github.com/ZQCard/design_pattern
    /*
    * * 迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。 * 这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。 */

    (1)Iterator.class.php(接口)

    <?php
    
    namespace Iterator;
    
    interface Iterator
    {
        public function First();
        public function Next();
        public function IsDone();
        public function CurrentItem();
    }

    (2) ConcreteIteratior.class.php

    <?php
    
    namespace Iterator;
    
    class ConcreteIterator implements Iterator{
        private $_users;
    
        private $_current = 0;
    
        public function __construct(array $users)
        {
            $this->_users = $users;
        }
    
        public function First()
        {
            return $this->_users[0];
        }
    
        //返回下一个
        public function  Next()
        {
            $this->_current++;
            if($this->_current<count($this->_users))
            {
                return $this->_users[$this->_current];
            }
            return false;
        }
    
        //返回是否IsDone
        public function IsDone()
        {
            return $this->_current>=count($this->_users)?true:false;
        }
    
        //返回当前聚集对象
        public function CurrentItem()
        {
            return $this->_users[$this->_current];
        }
    }

    (3)iterator.php (客户端)

    <?php
    spl_autoload_register(function ($className){
        $className = str_replace('\','/',$className);
        include $className.".class.php";
    });
    
    use IteratorConcreteIterator;
    
    $iterator= new ConcreteIterator(array('周杰伦','王菲','周润发'));
    $item = $iterator->First();
    echo $item."<br/>";
    while(!$iterator->IsDone())
    {
        echo "{$iterator->CurrentItem()}:请买票!<br/>";
        $iterator->Next();
    }
  • 相关阅读:
    linux Mint 安装apache2
    linux Mint 安装tomcat8
    linux Mint wine安装qq,桌面快捷键配置
    linux Mint mysql 安装
    卸载linux Mint自带jdk并安装最新jdk
    linux Mint截图软件 Shutter
    linux git安装及配置(包括更新)
    linux安装wine
    百度地图用ip获取当前位置的经纬度(高精度)
    mysql 索引和视图
  • 原文地址:https://www.cnblogs.com/zhouqi666/p/9156580.html
Copyright © 2020-2023  润新知