我有以下问题:
定义一个扩展java.awt.Point的Origin对象。为什么不这样做 其实是个好主意? (仔细看看Point的方法 类。)
import java.awt.Point
对象Origin扩展Point {}
但我真的不知道为什么扩展这个课程不是一个好主意。有人可以开导我吗?
答案 0 :(得分:2)
Java Point
的“合同”在这里:http://docs.oracle.com/javase/7/docs/api/java/awt/Point.html。如@Jesper所述,Point被设计为可变的,并且具有setLocation(<overloaded>)
之类的变换器。鉴于此信息,这里使用它并使用它的缺点是:
object Origin extends Point { }
创建Point的单例时,你只能在整个应用程序中拥有一个Origin对象(不会谈论类加载器及其范围)。我希望你现在看到这个矛盾:一方面如果你想在应用程序中有一个单一的起源并能够推理它,你会希望你的起源永远不会改变(不可变)。另一方面,如果你不想拥有单一的原点,那么创建一个单例根本就没有用。