第一章最後對於akka的actor操作
由於所有的消息都是異步發送的所以每次運行的結果都不一樣,自己可以對結果進行分析
代碼如下:
/**
* Created by DreamBoy on 2017/5/11.
*/
trait PeoplePleaser{
def makePeopleHappy = println("People like me")
}
abstract class Plant{
def photossynthesis = println("oh the sunlight!")
}
class Rose extends Plant with PeoplePleaser{
def smell = println("good!")
}
object Messages{
object Exit
object Finished
case class Response(message:String)
}
class ShaperDrawActor extends Actor{
import Messages._
override def receive: Receive = {
case s:PeoplePleaser=>{ println("PeoplePleaser")}
sender!Response(s"PeoplePleaser:$s drawn")
case s:Plant =>{println("Plant")}
case Exit =>{println("-exit----")}
sender!Finished
case unexpected =>{ println("unexpected")}
val responce = Response(s"error unknown message:$unexpected")
sender!responce
}
}
object ShapesDrawingDriver {
def main(args: Array[String]): Unit = {
val system = ActorSystem("DrawingActorSystem",ConfigFactory.load())
val drawer = system.actorOf( Props(new ShaperDrawActor),"drawingActor")
val driver = system.actorOf(Props(new ShapesDrawingDriver(drawer)),"drawingService")
driver!Start
}
}
class ShapesDrawingDriver(drawActor:ActorRef) extends Actor{
override def receive: Receive = {
case Start =>
drawActor!print("11111111")
drawActor!println("222222222")
drawActor!Exit
case Finished =>
drawActor!println("finished")
case unexpected =>
println(s"$unexpected")
}
}
根據顏色分辨處理對應的步驟和結果吧
”