Spark涉及的设计模式-创建型-单例模式
单例模式的作用
单例模式主要是避免了一个全局使用的类频繁地创建和销毁。当想要控制实例数据节省系统资源的时候可以使用。
在java中单例模式有很多种写法,比如什么饱汉、饿汉,双重检查等等但是在scala语言中这个完全不需要什么这么多花里胡哨的,仅仅需要一个伴生对象。伴生对象就是单例模式的。
伴生对象采用object声明
在spark中使用的例子
在spark中简单举一个例子
private[netty] object NettyRpcEnv extends Logging {
/**
* When deserializing the [[NettyRpcEndpointRef]], it needs a reference to [[NettyRpcEnv]].
* Use `currentEnv` to wrap the deserialization codes. E.g.,
*
* {{{
* NettyRpcEnv.currentEnv.withValue(this) {
* your deserialization codes
* }
* }}}
*/
private[netty] val currentEnv = new DynamicVariable[NettyRpcEnv](null)
/**
* Similar to `currentEnv`, this variable references the client instance associated with an
* RPC, in case it's needed to find out the remote address during deserialization.
*/
private[netty] val currentClient = new DynamicVariable[TransportClient](null)
}
这个伴生对象就是属于单例模式。