Python基础知识:观察者模式

A、语言优点
1.Python语言简单,更优雅,直观上来看,省略;和{},代码看上去更干净,易读,易理解
2.入手快,学习曲线低
3.解释性语言
4.丰富的第三方库
B、Python特性
1.解释性语言,速度相较于c,c++相对慢一些,由于现在硬件配置都非常高,基本上没有影响,除非一些实时性比较强的项目,会有一点影响,可嵌套c程序解决
2.强制缩进 对于新手来说不习惯,少缩进一个空格就会报错,特别是多个if嵌套还需要print的时候,整不好就bug了,习惯了会发现强制空格非常优雅
C、环境搭建
大多数的开发工具都大同小异,自己用起来顺手就ok.
目前没有用到虚拟环境,后续会切换到linux环境,也很想尝试Python三大神器之一virtualenv:
1.Pycharm类似于微软的VS系列产品风格,功能强大,安装第三方库以及断点调试都很方便
这里写图片描述
2.Sublime Text 界面优美,简洁
这里写图片描述
Python小程序:观察者模式实现
Python基本语法,自定义函数,基类定义,子类继承

# python实现观察者模式
#定义微信公众号接口
class WXPublisher(object):
    def __init__(self):
        pass
    def register(self):
        pass
    def unregister(self):
        pass
    def notifyAll(self):
        pass

#公众号实现类
class PublishSevice(WXPublisher):
    def __init__(self,servicename):
        self._listOfUsers = []
        #帖子文章
        self.postname = None
        #服务号名称
        self.servicenumber = servicename
    #添加订阅者信息
    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 writeNewPost(self,postname):
        print('微信服务号{}:{}'.format(self.servicenumber,postname))
        self.postname = postname
        self.notifyAll()


#定义订阅者接口
class Subscriber(object):
    def __init__(self):
        pass
    #通知接口
    def notify(self):
        pass
#订阅用户1
class User1(Subscriber):
    def __init__(self, username):
        self.username = username

    def notify(self,postname):
        print('微信用户:{},接受到了帖子:{}'.format(self.username,postname))

#订阅用户2
class User2(Subscriber):
    def __init__(self,username):
        self.username = username

    def notify(self,postname):
        print('微信用户:{},接受到了帖子:{}'.format(self.username,postname))

#订阅用户3
class User3(Subscriber):
    def __init__(self, username):
        self.username = username
    def notify(self,postname):
        print('微信用户:{},接受到了帖子:{}'.format(self.username,postname))

#订阅用户4
class User4(Subscriber):
    def __init__(self, username):
        self.username = username
    def notify(self,postname):
        print('微信号:{},接受到了帖子:{},并阅读了帖子'.format(self.username,postname))



#程序入口
if __name__ == "__main__":
    #微信服务号
    travelsevice = PublishSevice("旅游小知识")
    pythonsevice = PublishSevice("Python论坛")
    #用户对象
    user1 = User1('jack')
    user2 = User2('marin')
    user3 = User3('faker')
    user4 = User4('huni')
    #订阅旅游小知识公众号
    travelsevice.register(user1)
    travelsevice.register(user2)
    travelsevice.register(user3)
    travelsevice.register(user4)
    #订阅Python论坛公帐号
    pythonsevice.register(user1)
    pythonsevice.register(user2)
    pythonsevice.register(user3)
    pythonsevice.register(user4)
    #公众号发布文章通知所有订阅
    travelsevice.writeNewPost("发布了迪士尼乐园游玩项目介绍")
    #用户2取消订阅旅游知识号
    travelsevice.unregister(user2)
    #取消订阅的用户接收不到通知
    travelsevice.writeNewPost("发布了一篇Python技术帖子")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值