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<>...
问题
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...
观察者模式(Observer Pattern)定义了对象之间的一对多依赖,让多个观察者对象同 时监听一个主体对象,当主体对象发生变化时,它的所有依赖者(观察者)都会收到通 知并更新,属于行为型模式。观察者模式有时也叫做发布订阅模式。观察者模式主要用 于在关联行为之间建立一套触发机制的场景
应用场景
观察者模式在现实生活应用也非常广泛, 比如:微信朋友圈动态通知、消息通知、邮件通知、广播通知
实现...
UML类图
用于描述系统中类(对象)本身的组成和类(对象)之间的各种静态关系
类与类之间的关系:依赖、泛化(继承)、实现、关联、聚合与组合
依赖
只要在类中用到了对方,那么他们之间就存在依赖关系,如果没有对方,连编译都无法通过
public class PersonServiceBean {
private PersonDao personDao;//类
public void save...
文章链接:https://www.dianjilingqu.com/4782.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。