前言
观察者模式(Observer Pattern)又被称为发布-订阅(Publish/Subscribe)模式。
该模式描述了对象间一对多的依赖关系,当一个对象状态发生改变时,其依赖对象都会得到通知并自动更新。
发生改变的对象为观察目标,被通知并自行更新的对象为观察者。
一、基础方法
使用委托与事件,当猫叫时,老鼠跑,主人醒。
class Program
{
static void Main(string[] args)
{
Cat cat = new Cat();
Mouse mouse = new Mouse();
Person person = new Person();
cat.OnCatCall();
cat.CatCall += new Cat.CatCallEventHandler(mouse.MouseRun);
cat.CatCall += new Cat.CatCallEventHandler(person.WakeUp);
cat.OnCatCall();
}
}
class Cat
{
//委托
public delegate void CatCallEventHandler();
//事件
public event CatCallEventHandler CatCall;
public void OnCatCall()
{
if (CatCall!=null)
{
Console.WriteLine("猫叫了一声!");
CatCall();
}
}
}
class Mouse
{
public void MouseRun()
{
Console.WriteLine("老鼠跑!");
}
}
class Person
{
public void WakeUp()
{
Console.WriteLine("主人醒来!");
}
}
二、扩展方法
1.用委托实现观察者模式
代码如下:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
2.用事件实现观察者模式
代码如下:
data = pd.read_csv(
'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())