当前位置: 代码迷 >> 综合 >> scala 近期代码一些收获,记住了
  详细解决方案

scala 近期代码一些收获,记住了

热度:40   发布时间:2023-12-12 11:35:41.0
1 创建匿名子类对象
abstract IloPollingActorBoss{
val actor:Actor

def pooling = {}
def suicite = {}

在其他地方可以创建如下子类对象, 本生抽象类是不允许创建实例的,但是创建的时候可以传入实现构成一个匿名的变量


val s = new IloPollingActorBoss {val actor = new xxxx}






2 重构手法,发现某个类职责不单一,比如如下client,做了3件事,处理建链,处理消息发送,处理心跳保活
一个较好的职责分离的手段就是,提取一个基类,让原始的client extern这个基类,这样全世界都不用修改,
 修改特别小


class vnfmclient{
    val webprovider;
val ip;
val port;

def connect() {}
def heartbeet() {}
def msgSend {}
}


class msgSender(
val webprovider;
def msgSend()
}
class vnfmclient externds msgSender
{
val webprovider;
val ip;
val port;

def connect() {}
def heartbeet() {}
}


3 使用客里函数式编程,分离数据和方法
比如有如下类似函数。


def a = {
val client = buildClient(ip)
client.dosomething
}


def b = {
val client = buildClient(ip)
client.dosomething
}


可以如下修改:


def useclient(ip:string)(action:Client=>unit)
{
buildClient(ip).action
}


于是就可以修改为:
def a = {
useclient{client=>client.dosomething}
}


4 使用构造函数
object myClass{
def apply(c:string,d:string) = {new myClass(c,d)}
}


class myClass(val a:string,val b:string) {
}