zoukankan      html  css  js  c++  java
  • 访问者模式统计下属用户银两和金币

    功能:

    统计一组用户的银两和金币.

    一.用户接口和实现

    interface UserInterface
    {
        public function accept(Visitor $visitor);
    }
    

      

    class User implements UserInterface
    {
        private $uid;
        private $silver;
        private $money;
    
        public function __construct($uid, $silver, $money)
        {
            $this->uid      = $uid;
            $this->silver   = $silver;
            $this->money    = $money;
        }
    
        /**
         * @return mixed
         */
        public function getUid()
        {
            return $this->uid;
        }
    
        /**
         * @return mixed
         */
        public function getSilver()
        {
            return $this->silver;
        }
    
        /**
         * @return mixed
         */
        public function getMoney()
        {
            return $this->money;
        }
    
        public function accept(Visitor $visitor)
        {
            $visitor->visitUser($this);
        }
    }
    

      

    二.访问者接口和实现

    interface VisitorInterface
    {
        public function visitUser(User $user);
    }
    

      

    class Visitor implements VisitorInterface
    {
        public $silverTotal  = 0;
        public $moneyLevel  = 0;
    
        public function visitUser(User $user)
        {
            $this->silverTotal  += $user->getSilver();
            $this->moneyLevel   += $user->getMoney();
        }
    
        public function __toString()
        {
            return "总计下属用户:银两合计:{$this->silverTotal};金币合计:{$this->moneyLevel}";
        }
    }
    

      

    三.调用:

    // 模拟数据库读取一批用户
    $user = new User(1, 10, 200);
    $list = [];
    $list[] = clone $user;
    $list[] = clone $user;
    $list[] = clone $user;
    $list[] = clone $user;
    $list[] = clone $user;
    
    $visitor = new Visitor();
    
    foreach ($list as $user) {
        $user->accept($visitor);
    }
    
    echo $visitor;
  • 相关阅读:
    thinkPHP入门之二
    thinkPHP入门
    斐波那契数列,冒泡排序,选择排序,数组去重
    jquery-懒加载插件
    本地存储之cookie
    javascript的快速排序法
    [luogu2165 AHOI2009] 飞行棋 (枚举)
    [luogu2576 SCOI2010] 幸运数字 (容斥原理)
    [luogu2587 ZJOI2008] 泡泡堂 (贪心)
    [luogu2602 ZJOI2010] 数字计数 (数位dp)
  • 原文地址:https://www.cnblogs.com/itfenqing/p/8735086.html
Copyright © 2011-2022 走看看