日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

Unity 3D观察者设计模式-C#委托和事件的运用

發(fā)布時(shí)間:2024/1/17 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity 3D观察者设计模式-C#委托和事件的运用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

C#觀察者設(shè)計(jì)模式


本文提供全流程,中文翻譯。

Chinar 堅(jiān)持將簡(jiǎn)單的生活方式,帶給世人!

(擁有更好的閱讀體驗(yàn) —— 高分辨率用戶(hù)請(qǐng)根據(jù)需求調(diào)整網(wǎng)頁(yè)縮放比例)



Chinar —— 心分享、心創(chuàng)新!

助力快速理解 觀察者設(shè)計(jì)模式

為新手節(jié)省寶貴的時(shí)間,避免采坑!


Chinar 教程效果:

刑警警察叔叔注視了一下四周 穿黑色衣服的:神偷 - 跑了 穿白色衣服的:笨賊 - 跑了 穿平常色衣服的:平民 - 跑了 穿紅色衣服的:強(qiáng)盜 - 跑了

  • 1
    • Police —— 警察類(lèi)
  • 2
    • Thief —— 小偷
  • 3
    • Main —— 主入口
  • 4
    • Console —— 控制臺(tái)輸出
  • 支持
    • May Be —— 搞開(kāi)發(fā),總有一天要做的事!


全文高清圖片,點(diǎn)擊即可放大觀看 (很多人竟然不知道)


1

Police —— 警察類(lèi)


這個(gè)類(lèi)用來(lái)表示警察

當(dāng)警察看向四周的時(shí)候,所有事件下的訂閱者,都會(huì)被調(diào)用到

也可以理解為廣播:當(dāng)警察看向四周,所有小偷都接收到了廣播

/// <summary>/// 警察類(lèi)/// </summary>class Police{private string type; //類(lèi)型private string name; //名稱(chēng)public event Action PoliceLook; //委托+event變事件/// <summary>/// 構(gòu)造函數(shù)/// </summary>/// <param name="type">類(lèi)型</param>/// <param name="name">名稱(chēng)</param>public Police(string type, string name){this.type = type;this.name = name;}/// <summary>/// 注視/// </summary>public void LookAt(){Console.WriteLine(type + name + "注視了一下四周");if (PoliceLook != null){//外部調(diào)用LookAt后,當(dāng)警察注視周?chē)臅r(shí)候。會(huì)調(diào)用事件對(duì)象中,所有訂閱的用戶(hù)(也就是所有小偷,因?yàn)樗行⊥刀加嗛喠?#xff09;PoliceLook();}}//區(qū)別://1.事件不能在類(lèi)的外部,通過(guò)類(lèi)對(duì)象調(diào)用;事件提供廣播,訂閱//2.委托可以,在內(nèi)外調(diào)用//3.事件表達(dá)外發(fā)的接口、委托常用回調(diào)函數(shù)//

2

Thief —— 小偷


這個(gè)類(lèi)用來(lái)表示小偷,具備基本屬性名字、顏色、逃跑功能

那什么時(shí)候逃跑呢??就是當(dāng)警察看向四周的時(shí)候逃跑

就是讓所有小偷、訂閱警察看向四周的事件,從而達(dá)到設(shè)計(jì)目的

/// <summary>/// 小偷類(lèi)/// </summary>class Thief{private string name; //名字private string color; //衣服顏色/// <summary>/// 構(gòu)造/// </summary>/// <param name="name">小偷名</param>/// <param name="color">衣服顏色</param>/// <param name="police">警察</param>public Thief(string name, string color, Police police){this.name = name;this.color = color;police.PoliceLook += Run; //把自身的逃跑方法,注冊(cè)/訂閱 警察類(lèi)的事件對(duì)象中。一旦警察有Look這個(gè)動(dòng)作,Run方法就會(huì)執(zhí)行}/// <summary>/// 小偷逃跑打印方法/// </summary>public void Run(){Console.WriteLine("穿" + color + "衣服的:" + name + " - 跑了");}}

3

Main —— 主入口


這個(gè)類(lèi)用來(lái)測(cè)試、打印輸出結(jié)果

直觀的表示事件變動(dòng)

這個(gè)觀察者設(shè)計(jì)模式很簡(jiǎn)單,直觀的即可明白事件、委托是怎樣傳遞信息的

/// <summary>/// 測(cè)試類(lèi)——用來(lái)輸出結(jié)果/// </summary>class Program{/// <summary>/// 程序主入口/// </summary>/// <param name="args"></param>static void Main(string[] args){Police police = new Police("刑警", "警察叔叔");Thief thief1 = new Thief("神偷", "黑色", police);Thief thief2 = new Thief("笨賊", "白色", police);Thief thief3 = new Thief("平民", "平常色", police);Thief thief4 = new Thief("強(qiáng)盜", "紅色", police);//police.PoliceLook += thief1.Run;//這種方法沒(méi)有上邊直接構(gòu)造簡(jiǎn)單,目的都一樣//police.PoliceLook += thief2.Run;//police.PoliceLook += thief4.Run;police.LookAt(); //當(dāng)警察對(duì)象有所動(dòng)作的時(shí)候,所以訂閱了的小偷。都會(huì)被傳達(dá)信息,從而調(diào)用事件中封裝的所有訂閱者函數(shù)Console.ReadLine();}}

4

Console —— 控制臺(tái)輸出


F5控制臺(tái)輸出結(jié)果

會(huì)發(fā)現(xiàn),只有當(dāng) police.LookAt() 被調(diào)用的時(shí)候,小偷才跑

否則,小偷都沒(méi)有任何動(dòng)作

簡(jiǎn)單的一個(gè)小例子,可直觀的看出事件/委托是如何傳遞不同類(lèi)之間的調(diào)用關(guān)系

刑警警察叔叔注視了一下四周 穿黑色衣服的:神偷 - 跑了 穿白色衣服的:笨賊 - 跑了 穿平常色衣服的:平民 - 跑了 穿紅色衣服的:強(qiáng)盜 - 跑了

支持

May Be —— 搞開(kāi)發(fā),總有一天要做的事!


擁有自己的服務(wù)器,無(wú)需再找攻略!

Chinar 提供一站式教程,閉眼式創(chuàng)建!

為新手節(jié)省寶貴時(shí)間,避免采坑!


先點(diǎn)擊領(lǐng)取 —— 阿里全產(chǎn)品優(yōu)惠券 (享受最低優(yōu)惠)


1 —— 云服務(wù)器超全購(gòu)買(mǎi)流程 (新手必備!)

2 —— 阿里ECS云服務(wù)器自定義配置 - 購(gòu)買(mǎi)教程(新手必備!)

3—— Windows 服務(wù)器配置、運(yùn)行、建站一條龍 !

4 —— Linux 服務(wù)器配置、運(yùn)行、建站一條龍 !





Chinar


END

本博客為非營(yíng)利性個(gè)人原創(chuàng),除部分有明確署名的作品外,所刊登的所有作品的著作權(quán)均為本人所擁有,本人保留所有法定權(quán)利。違者必究

對(duì)于需要復(fù)制、轉(zhuǎn)載、鏈接和傳播博客文章或內(nèi)容的,請(qǐng)及時(shí)和本博主進(jìn)行聯(lián)系,留言,Email: ichinar@icloud.com

對(duì)于經(jīng)本博主明確授權(quán)和許可使用文章及內(nèi)容的,使用時(shí)請(qǐng)注明文章或內(nèi)容出處并注明網(wǎng)址

轉(zhuǎn)載于:https://www.cnblogs.com/chinarbolg/p/9601423.html

總結(jié)

以上是生活随笔為你收集整理的Unity 3D观察者设计模式-C#委托和事件的运用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。