只有公共静态方法和实例化类的类

时间:2009-08-10 21:23:59

标签: architecture

我理解一个只包含公共静态成员函数的类称为Monotype。某些类(如Java / C#中的Integer类)已实现各种静态函数。我也是编写厨房水槽实用程序类的指南,比如InputCleaner.StripHTMLTags()等。

是否有Monotypes和公共静态函数的指南?

例如,假设我有一个骰子类

class Dice
{

     public static function RollD100()
     {
         ....
     }
}

应该是Monotype,还是必须实例化的类?

我确实为必须实例化的类找到了一些优点:

  1. 如果您有类中的状态或数据来跟踪
  2. ,则需要一个对象
  3. 你可以使用多态,因为似乎没有静态成员函数多态(至少在C ++中,如果我没记错的话。想想PHP 5.3可能有这个)
  4. 而对于单一型,你会得到

    1. 它的功能类似于全局功能
    2. 初始化无需执行步骤
    3. 除此之外,还有哪些其他指导原则?

2 个答案:

答案 0 :(得分:1)

我使用它们的唯一目的是在单个模块中收集相关但无状态的功能。只要添加状态(成员变量),就会有一个Singleton。

答案 1 :(得分:0)

Monotypes,monletons和static class对某些场景非常有效。但他们冒着设置OO前思维的风险,从而使您获得更好的代码清晰度,可发现性和重用性。例如,像StripHTMLTags()这样的东西会更有意义作为String类的扩展吗? (或者可能是输入小部件类)?