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 }

 

推荐这些技术文章:

设计模式-》构造者模式

抽象构造

AbsPlatformManagerBuilder,H5PlatformManagerBuilder,AppPlatformManagerBuilder,AbsPlatformManager,H5PlatformManager,AppPlatformManager,USAH5PlatformManager,USAAppPlatformManager,USAH5PlatformMana...

设计模式-》观察者模式

例子

教会(Subject)
教会成员(Observer)
public class GuildSubject
{
private List<AbsSubscriber<GuildSubject>> _subscribers;

public GuildSubject(string guildName)
{
...

设计模式-门面模式

 
public class System1 { public void dosomething() { System.out.println("system1.."); }}
public class System2 { public void dosomething() { System.out.println("system2..")...

设计模式-》状态机模式

例子

我们经常坐电梯都知道,电梯有多种状态,就按最简单的来说,包括运行状态、停止状态、开门状态、闭门状态。下面就以电梯运行为例,举一个具体的实例,UML图如下:

public abstract class LiftState
{
protected LiftContext LiftContext;

public void SetConte...

设计模式--观察者模式

简介
​ 观察者模式(Observer Pattern),又叫发布-订阅(Publish/Subscibe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。定义一种一对多的依赖关系,一个主题对象可被多个观察者对象同时监听,使得每当主题对象状态变化时,所有依赖它的对象都会得到通知并被自动更新。属于行为型模式。
​ ...

行为型设计模式:观察者模式

观察者模式(发布订阅模式),在对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有依赖的对象都会自动收到通知。
现在有一个注册后发送欢迎使用的功能,实现如下:

public class UserService{
private SendMessageService sendMessageService; // 依赖注入

public Long register(String ...

设计模式之 观察者模式

又叫发布-订阅者模式,或者模型-视图模式。
在被观察者的状态发生变化时,系统基于事件驱动理论将其状态通知到订阅其状态的观察者对象中,以完成状态的修改和事件传播。
 

(1)定义抽象主题

public abstract class Subject{
protected List<Observer> observers = new ArrayList<>...

C#继承实现有点小疑惑

问题
class animal
{
public animal(){};
private string name;
public animal ( string name)
{
this.name=name;
}
public virtual void show()
{
console.writeln("我叫:{0}",name);
}
}
 
class people:a...

设计模式系列10-观察者模式

观察者模式(Observer Pattern)定义了对象之间的一对多依赖,让多个观察者对象同 时监听一个主体对象,当主体对象发生变化时,它的所有依赖者(观察者)都会收到通 知并更新,属于行为型模式。观察者模式有时也叫做发布订阅模式。观察者模式主要用 于在关联行为之间建立一套触发机制的场景
应用场景
观察者模式在现实生活应用也非常广泛, 比如:微信朋友圈动态通知、消息通知、邮件通知、广播通知
实现...

设计模式系列(七)UML类图

UML类图

用于描述系统中类(对象)本身的组成和类(对象)之间的各种静态关系
类与类之间的关系:依赖、泛化(继承)、实现、关联、聚合与组合

依赖
只要在类中用到了对方,那么他们之间就存在依赖关系,如果没有对方,连编译都无法通过
public class PersonServiceBean {
private PersonDao personDao;//类
public void save...

文章标题:C#之设计模式:观察者模式
文章链接:https://www.dianjilingqu.com/4782.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>