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("郑言的微博")
实现了一个观察者模式
结构图如上: