访问者模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了访问者模式相关的知识,希望对你有一定的参考价值。

访问者模式


表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。

场景:我们需要在用户积分增加的时候,写入一个日志文件,同时给该用户发送一个邮件.

interface ActionHandle
{
    public function handle(User $user);
}

class User
{
    public $point;
    public $uid;
    public $name;

    public function __construct($point, $uid, $name)
    {
        $this->point = $point;
        $this->uid = $uid;
        $this->name = $name;
    }

    public function addPoint($dValue)
    {
        $this->point += $dValue;
    }

    public function handle(ActionHandle $handle)
    {
        $handle->handle($this);
    }
}

class Log implements ActionHandle
{
    public function handle(User $user)
    {
        file_put_contents(‘log.txt‘, "{$user->uid} {$user->name} 操作积分: 操作后积分{$user->point}");
    }
}

class Email implements ActionHandle
{
    public function handle(User $user)
    {
        $title = "您的积分增加了";
        $content = "{$user->uid} {$user->name} 操作积分: 操作后积分{$user->point}";
        $this->sendEmail($title, $content);
    }

    protected function sendEmail($title, $content)
    {
        // 发送邮件
        echo $title;
        echo $content;
    }
}

$user = new User(500, 1, ‘jack‘);
$user->addPoint(100);

$log = new Log();
$user->handle($log);

$email = new Email();
$user->handle($email);

  

以上是关于访问者模式的主要内容,如果未能解决你的问题,请参考以下文章

在不存在的片段上调用片段生命周期和 onCreate 的问题

尝试使用片段保存夜间模式状态

是否有在单个活动中处理多个片段的 Android 设计模式?

片段管理访问错误可见 return false

如何访问 MainActivity() 中的片段元素?

使用绑定从片段访问父活动的 UI 元素