Stateless类与空构造函数和Static类之间有什么区别?

时间:2014-02-13 12:12:21

标签: php oop static-methods stateless

假设我必须创建一个带有一些文本的类来做一些处理并返回它...没有依赖,它是一个无状态类..

我想知道创建一个没有构造函数的无状态类或者只创建一个静态类会更好(在php中它只是静态方法)

像这样的课:

class ClassName
{
    public function processText($text)
    {
         // Some code
         $text = $this->moreProcessing($text);
         return $text;
    }

    protected function moreProcessing($text)
    {
        return $text;
    }
}

和此:

class ClassName
{
    public static function processText($text)
    {
         // Some code
         $text = static::moreProcessing($text);
         return $text;
    }

    protected static function moreProcessing($text)
    {
        return $text;
    }
}

我知道将依赖注入到使用这些类的类中会更好但是假设我不会有依赖注入..

我的问题主要是为上面的简单示例创建静态类更好吗?

1 个答案:

答案 0 :(得分:1)

实际上你看不出任何差别。

这只是在语法和构造函数自动执行内容的能力,尽管你仍然需要创建实例来调用构造函数,在这种情况下,调用一些等效的static成员函数并不远

但是,非static成员函数假定会影响内部状态,因此,如果您没有状态,static成员函数似乎更常规,并且会稍微对班级用户来说不那么令人惊讶。

但最好的方法是将函数放在命名空间中。类用于操作该数据的数据和函数......甚至是static个。