当前位置:  开发笔记 > 编程语言 > 正文

Helper/Utility Classes应该是抽象的吗?

如何解决《Helper/UtilityClasses应该是抽象的吗?》经验,为你挑选了3个好方法。

我经常发现自己将类中的常见行为提取到helper/utility类中,这些类只包含一组静态方法.我经常想知道我是否应该将这些类声明为抽象类,因为我无法真正想到实例化这些类的正当理由?

优点和缺点是宣布这样一个类是抽象的.

public [abstract] class Utilities{

   public static String getSomeData(){
       return "someData";
   }

   public static void doSomethingToObject(Object arg0){
   }
}

Outlaw Progr.. 73

你可以声明一个什么都不做的私有构造函数.

声明类"abstract"的问题在于abstract关键字通常意味着该类旨在进行子类化和扩展.这绝对不是你想要的.



1> Outlaw Progr..:

你可以声明一个什么都不做的私有构造函数.

声明类"abstract"的问题在于abstract关键字通常意味着该类旨在进行子类化和扩展.这绝对不是你想要的.


可悲的是,你无法宣布它是最终的抽象.:-)
并且可能宣布它是最终的,以使你的意图绝对清楚.
他并没有暗示他应该......:|

2> Jon Skeet..:

不要打扰它们是抽象的,而是包含一个私有的无参数构造函数来防止它们被实例化.

对于那些感兴趣的人来说比较点:在C#中你会声明这个类是静态的,使它在编译形式中是抽象的密封的(Java的最终版),而根本没有任何实例构造函数.这也使得声明该类型的参数,变量,数组等成为编译时错误.便利.



3> 小智..:

我没有声明实用程序类抽象,我声明它们是final并使构造函数私有.这样它们就不能被子类化,也无法实例化.


public final class Utility
{
    private Utility(){}

    public static void doSomethingUseful()
    {
        ...
    }
}

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有