偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

強(qiáng)類型和Actor:ActorLite的演示

開發(fā) 開發(fā)工具
本文使用ActorLite演示了將消息類型定義為Object的過程。為了避免繁瑣的轉(zhuǎn)型,為了獲得類型安全的各種優(yōu)勢,我們也可以選擇為每種不同的消息創(chuàng)建獨(dú)立的類型。

為了避免繁瑣的轉(zhuǎn)型,為了獲得類型安全的各種優(yōu)勢,我們也可以選擇為每種不同的消息創(chuàng)建獨(dú)立的類型。不過由于一個Actor往往會應(yīng)對各種消息,因此在.NET環(huán)境中,往往我們需要把消息類型定義為object。如果使用ActorLite來演示的話,代碼可能是這樣的:

ActorLite的演示

  1. class Person : Actor<object>  
  2. {  
  3.     protected override void Receive(object message)  
  4.     {  
  5.         if (message is ChatMessage)  
  6.         {  
  7.             ChatMessage chatMsg = (ChatMessage)message;  
  8.             Person another = chatMsg.Another;  
  9.             Topic topic = chatMsg.Topic;  
  10.             // ...  
  11.         }  
  12.         else if (message is EatMessage)  
  13.         {  
  14.             EatMessage eatMsg = (EatMessage)message;  
  15.             Restaurant restaurant = eatMsg.Restaurant;  
  16.             // ...  
  17.         }  
  18.         else if (message is WorkMessage)  
  19.         {  
  20.             WorkMessage workMsg = (WorkMessage)message;  
  21.             Person reportTo = workMsg.ReportTo;  
  22.             Job job = workMsg.Job;  
  23.             // ...  
  24.         }  
  25.     }  

圖示如下:

強(qiáng)類型下的Actor 

在Actorlite演示中,使用if…else來進(jìn)行邏輯分支判斷還是必要的,不過我們這里使用了靜態(tài)類型代替了Magic String(當(dāng)然在使用Tag Message時也可以使用常量)的判斷,同時危險而麻煩的類型轉(zhuǎn)換操作也減少的。與Tag Message相比,這種做法獲得了一定的類型安全優(yōu)勢,可以得到編譯器的靜態(tài)檢查,做起重構(gòu)來也有了依據(jù)。不過他也有比較明顯的缺陷,那就是需要構(gòu)建大量的消息類型。要知道消息類型的數(shù)量很可能是Actor類型數(shù)量的幾倍,每種消息類型還包含著多個屬性,構(gòu)造函數(shù)接受參數(shù),然后在構(gòu)造函數(shù)里設(shè)置屬性……這種做法對復(fù)雜性的提升還是較為可觀的,有時候會感覺還不如使用簡單的Tag Message。

【編輯推薦】

  1. C#的Tag Message回顧:繁瑣而危險
  2. Erlang的Actor回顧:將消息轉(zhuǎn)化為邏輯執(zhí)行
  3. Actor模型的本質(zhì):究竟是要解決什么問題
  4. 順暢的使用C# Actor:另一個解決方案
  5. C# Actor的尷尬與F#美麗外表下的遺憾
責(zé)任編輯:yangsai 來源: 老趙點(diǎn)滴
相關(guān)推薦

2010-09-26 09:01:18

SQL強(qiáng)類型查詢

2009-09-08 14:56:55

強(qiáng)類型DataContLinq to SQL

2023-10-10 19:32:43

強(qiáng)靜態(tài)類型制表符

2009-08-18 10:17:25

C#枚舉類型

2009-07-09 10:02:39

Actor模型Erlang

2024-07-09 08:00:48

C#var?關(guān)鍵字

2009-09-27 11:27:33

Hibernate3JBOSS 3.2

2011-04-13 08:49:33

DataSet強(qiáng)類型化

2010-12-23 14:03:26

SharePoint 視頻

2010-06-01 16:50:29

MySQL存儲過程

2010-03-02 14:12:30

WCF枚舉類型

2009-08-03 11:07:18

Scala Actor

2011-09-19 09:32:21

微軟Windows SerAzure

2020-08-31 19:17:24

Python強(qiáng)類型語言弱類型語言

2024-05-20 08:58:13

Java引用類型垃圾回收器

2010-07-05 12:09:16

SQL Server

2017-03-27 16:08:58

2009-06-11 17:54:00

Visual StudDataSet

2012-11-15 10:18:11

IBMdw

2022-03-26 09:06:40

ActorCSP模型
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號