scala单例模式代码实现

本文介绍了Scala中如何实现单例模式,包括无参数和带参数的两种情况。无参数的单例模式通过定义一个Object对象来实现,而带参数的单例模式则在创建对象时传入参数。通过示例代码展示了如何在测试类中获取并打印单例对象,验证了对象的唯一性。

Scala中使用单例模式时,除了定义的类之外,还要定义一个同名的Object对象,它和类的区别是,Object对象不能带参数。

  1. 无参数的单例模式
//定义一个类
class Demo() {
	def info():Unit={
		println("this is is a  no param single object")
	}
}

//定义一个与类同名的对象,从这里生成类的对象
object Demo {
	private val demo = new Demo
	def getDemo():Demo={
		demo
	}
}

//测试类,重复打印五次获得的对象,看看对象地址是否一致
object Test{
	def main(args:Array[String]):Unit={
		for (i <- 0 to 5){
			println(Demo.getDemo())
		}
	}
}
  1. 带参数的单例模式
//定义一个类
class Demo2(name:String) {
	def info():Unit={
		println("my name is "+name)
	}
}

//定义一个与类同名的对象,从这里生成类的对象
object Demo2 {
	private var demo : Demo2 = _
	def getDemo2(name:String):Demo2={
	if(demo==null){
		demo = new Demo2(name)
	}
		demo
	}
}

//测试类,重复打印五次获得的对象,看看对象地址是否一致
object Test{
	def main(args:Array[String]):Unit={
		for (i <- 0 to 5){
			val demo = Demo.getDemo()
			println(demo)
			demo.info()
		}
		
		for (i <- 0 to 5){
			val demo2 = Demo2.getDemo("korry")
			println(demo2)
			demo2.info()
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值