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) {
}
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) {
}