zoukankan      html  css  js  c++  java
  • C#之设计模式:观察者模式

    特点:又叫发布者/订阅者模式,定义了一种一对多的关系,当被监听对象发生变化时,会通知所有观察者对象。
    思考:委托里学过的多播委托,一个委托可以注册多个方法,当这个委托执行时,所有的方法都会被调用。
    案例:猫追老鼠经典案例。一只猫来了之后,所有的老鼠都跑了。
     
     1 using System.Collections;
     2 using System.Collections.Generic;
     3 using UnityEngine;
     4 using System;
     5 
     6 public class Visit : MonoBehaviour {
     7     private void Start()
     8     {
     9         Cat cat = new Cat("汤姆");
    10         Mouse mouse1 = new Mouse("杰瑞", cat);
    11         Mouse mouse2 = new Mouse("凯瑞", cat);
    12         Mouse mouse3 = new Mouse("马瑞", cat);
    13         cat.Coming();
    14     }
    15 }
    16 public class Animal
    17 {
    18     public string name;
    19     public Animal(string name)
    20     {
    21         this.name = name;
    22     }
    23     public virtual void Run() { }
    24 }
    25 public class Cat : Animal
    26 {
    27     public Action action;  //发布者
    28     public Cat(string name):base(name){}
    29     public override void Run()
    30     {
    31         Debug.Log(this.name+"去追老鼠了");
    32     }
    33     public void Coming()
    34     {
    35         Debug.Log(this.name+"来了");
    36         if (action != null)
    37         {
    38             action();
    39             this.Run();
    40         }
    41     }
    42 }
    43 public class Mouse : Animal
    44 {
    45     public Mouse(string name,Cat cat) : base(name)
    46     {
    47         cat.action += this.Run;  //订阅者
    48     }
    49     public override void Run()
    50     {
    51         Debug.Log(name + "跑了");
    52     }
    53 }
  • 相关阅读:
    Android学习第三天
    Android学习第二天(从零开始手动创建项目)
    【k8s】Pod-containers
    【k8s】Pod-Guaranteed
    【k8s】Pod-Burstable
    【k8s】Pod-BestEffort
    【k8s】Pod-qosClass
    【k8s】Pod-readinessGates
    【k8s】Pod-containerStatuses
    【k8s】Pod-conditions
  • 原文地址:https://www.cnblogs.com/tomatokely/p/15761938.html
Copyright © 2011-2022 走看看