Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对java.util.Date中的getTime和getTimeImpl方法感到困惑吗?_Java_Design Patterns_Java.util.date - Fatal编程技术网

对java.util.Date中的getTime和getTimeImpl方法感到困惑吗?

对java.util.Date中的getTime和getTimeImpl方法感到困惑吗?,java,design-patterns,java.util.date,Java,Design Patterns,Java.util.date,我对代码段有点困惑。 他为什么不这样写呢? 我认为它可能更可读 public long getTime() { return getTimeImpl(); } private final long getTimeImpl() { if (cdate != null && !cdate.isNormalized()) { normalize(); } return fastTime; } 我认为原因是您可以扩展Date类并重写方

我对代码段有点困惑。 他为什么不这样写呢? 我认为它可能更可读

 public long getTime() {
    return getTimeImpl();
}

private final long getTimeImpl() {
    if (cdate != null && !cdate.isNormalized()) {
        normalize();
    }
    return fastTime;
}

我认为原因是您可以扩展Date类并重写方法getTime()。

因为
Date.writeObject()
也调用
Date.getTimeImpl()


编辑:是的,
getTime()
只调用
getTimeImpl()
。我认为
getTimeImpl()
是将来可以更改的私有实现,而
getTime()
是不能更改的公共API。

这在我看来不像任何模式。这可能只是开发人员做事的方式。我想到的一件事是,可以将可重写方法
getTime()
与业务逻辑分离,即
getTimeImpl()
。为什么writeObject()不能调用getTime?我认为getTimeImpl()是不必要的。另外,我在看到你的昵称后知道这个昵称可以是中文的。除了你真的不能,因为
getTimeImpl()
也是
private
,所以派生类看不到它。
public long getTime(){
        if (cdate != null && !cdate.isNormalized()) {
            normalize();
        }
        return fastTime;
    }