设计模式之观察者模式的Python实现案例

2025-06-18 08:53:00

1、打开Python开发工具IDLE,新建‘observer.py’文件,先假设一个简单的应用场景,把上课状态及时通知给学生和老师。先创建一个观察者父类。代码如下:class observe: def update(self,skzt): pass def display(self): pass

设计模式之观察者模式的Python实现案例

2、创建observe父类的两个子类,student和teacher,并实现父类的update和dispaly方刮茕栓双法,代码如下;class student(observe): def __init__(self,name): self.name = name def update(self,skzt): self.skzt=skzt self.display() def display(self): print('学生:%s 知道了%s' %(self.name,self.skzt)) class teacher(observe): def __init__(self,name): self.name = name def update(self,skzt): self.skzt=skzt self.display() def display(self): print('老师:%s 知道了%s' %(self.name,self.skzt))

设计模式之观察者模式的Python实现案例

3、创建主题父类,有三个方法,注册观察者,移除观察者和通知观察者,代码如下:class subject: def registerObj(self,obj): pass def removeObj(self,obj): pass def notifyObj(self): pass

设计模式之观察者模式的Python实现案例

4、创建子类skl(上课啦),继承自主题类,在子类实现父类的注册观察者,移除观察者和通知观察藤舔趾贶者方法,同时创建设置上课状态方法,代码如下:class skl(subject): def __init__(self): self.observers = [] self.skzt = '' return def registerObj(self,obj): self.observers.append(obj) def removeObj(self,obj): self.observers.remove(obj) def setSkzt(self,skzt): self.skzt = skzt def notifyObj(self): for item in self.observers: item.update(self.skzt) return

设计模式之观察者模式的Python实现案例

5、在程序入口,创建一个skl类的对象,和学生类及教师类的对象。改变上课状态并写测试注册通知的代码,如下:s1=skl()s1.setSkzt('上课')stu1 = student('张三')s1.registerObj(stu1)tec1 = teacher('王老师')s1.registerObj(tec1)s1.notifyObj()

设计模式之观察者模式的Python实现案例

6、F5运行程序,成功把上课状态通知到了学生和老师

设计模式之观察者模式的Python实现案例

7、测试移除观察者代码,仅需增加一行,代码如下:s1.removeObj(stu1)

设计模式之观察者模式的Python实现案例

8、F5运行程序,仅把上课状态通知到了老师

设计模式之观察者模式的Python实现案例
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢