这两个示例对象设计的优缺点是什么?

时间:2016-10-13 22:30:55

标签: php function static

我有一个一般的(PHP)设计问题,我一直在旋转。在这个过于简单的示例中有一个我要验证的未验证对象。在我有限的知识中,我必须要走的路。

选项1)使用静态函数 - 比如说 - 验证者。在这里我分开了关注点(?)。对象本身不负责处理验证。我们使用一个服务对象(?)来处理它。

<?php

class Verifier {
    public static function verify(UnverifiedThing $unverifiedThing) : VerifiedThing {
        return new VerifiedThing($unverifiedThing);
    }
}

选项2)或者在未验证的类中使用函数,其中此对象本身负责实际验证并返回新的验证对象。

class UnverifiedThing {
    public function verify() : VerifiedThing {
        return new VerifiedThing($this);
    }
}

彼此之间的利弊是什么?还是有更好的设计,我没有考虑?

1 个答案:

答案 0 :(得分:0)

就我个人而言,选项2似乎并不直观。一个对象通过创建第二个对象来变形自己?没门。

选项1是通常的方法,尽管通常不使用静态函数。尝试设计能够验证给定对象的验证授权对象。这会将运行时设置绑定到该对象,而不是将它们保持为全局,并允许单独类型的此类代理。此类代理也更容易在自动测试用例中使用,因为您可以轻松地模拟它们。