class Publisher: def __init__(self): pass def register(self): pass def unregister(self): pass def notifyAll(self): pass class TechForum(Publisher): def __init__(self): self._listOfUsers = [] self.postname = None def register(self, userObj): if userObj not in self._listOfUsers: self._listOfUsers.append(userObj) def unregister(self, userObj): self._listOfUsers.remove(userObj) def notifyAll(self): for objects in self._listOfUsers: objects.notify(self.postname) def lognotify(self): for objects in self._listOfUsers: if(objects.flag == 1): objects.lognotify(self.postname) def countnotify(self): for objects in self._listOfUsers: if(objects.flag == 0): objects.countnotify(self.postname) def writeNewPost(self , postname): self.postname = postname self.notifyAll() def add(self,postname): self.postname=postname print("我增加了一条微博%s,被日志构件记录" % self.postname) self.lognotify() def delete(self,postname): self.postname=postname print("我删除了一条微博%s, 被日志构件记录" % self.postname) self.lognotify() def find(self,postname): self.postname = postname print("我查看了一条微博%s,被计数构件记录" % self.postname) self.countnotify() class Subscriber: def __init__(self): pass def notify(self): pass class logObserver(Subscriber): flag = 1 def notify(self, postname): print("日志构件已经开始观察%s" % postname) def lognotify(self,postname): print("%s记录成功" %postname) file = open('log.txt', 'a') file.write(postname+'\n') file.close() class countObserver(Subscriber): flag = 0 def notify(self, postname): print("计数构件已经开始观察%s" % postname) def countnotify(self,postname): print("%s记录成功" %postname) file = open('count.txt', 'a') file.write(postname+'\n') file.close() if __name__ == "__main__": log1 = logObserver() count1 = countObserver() weibo1 = TechForum() weibo1.register(log1) weibo1.register(count1) weibo1.writeNewPost("刘广泽的微博") weibo1.add("123") weibo1.delete("345") weibo1.find("hhh") #weibo1.unregister(count1) #weibo1.writeNewPost("郑言的微博")
实现了一个观察者模式
结构图如上: