在scala中,使用单例对象,定义一个point,使得可以不用new,而是用point(3,4)创建对象,并求横纵坐标的和
时间: 2024-10-11 17:09:24 浏览: 29
在Scala中,你可以使用单例模式和工厂方法来实现类似的功能。单例对象是一种特殊的设计模式,保证一个类只有一个实例,并提供全局访问点。为了创建一个Point对象并且允许通过`(x, y)`构造函数初始化,我们可以定义一个名为`Point`的单例类,包含一个私有的构造函数和一个工厂方法。
```scala
object Point {
private var instance: Point = null
// 私有构造函数防止直接创建实例
private def this(x: Int, y: Int) {
this()
this.x = x
this.y = y
}
private var x: Int = 0
private var y: Int = 0
// 创建并返回唯一实例的方法
def apply(x: Int, y: Int): Point = {
if (instance == null) {
instance = new Point(x, y)
}
instance
}
// 计算横纵坐标之和
def sumOfCoordinates: Int = x + y
}
```
现在,你可以使用`Point(3, 4)`来创建一个Point对象,并通过`sumOfCoordinates`属性获取横纵坐标的和:
```scala
val point = Point(3, 4)
val sum = point.sumOfCoordinates
println(s"The sum of coordinates is: $sum")
```
阅读全文