(8)python教程:几行代码搞定python 设计模式

#!/usr/bin/env python 
# -*- coding:utf-8 

class HttpBase: 
    def get(self): 
        psss 
class Http1(HttpBase): 
    def get(self): 
        print 'http1' 
class Http2(HttpBase): 
    def get(self): 
        print 'http2' 


class Base: 
    def __init__(self): 
        self.httpobj = None 
    def http(self): 
        self.httpobj.get() 
    def compute(self): 
        self.http() 
        self.show() 
    #虚函数 
    def show(self): 
        pass 
    def notify(self, k): 
        print 'notify', k 
        

#桥接模式,通过A,B 关联不同的http1和http2 
class BaseA(Base): 
    def __init__(self): 
        self.httpobj = Http1()        
    def notify(self, k): 
        print 'A notify', k     
    def show(self): 
        print 'show a' 
           
class BaseB(Base): 
    def __init__(self): 
        self.httpobj = Http2() 
    def notify(self, k): 
        print 'B notify', k 
    def show(self): 
        print 'show b' 

#观测者模式 
class Observer: 
    def __init__(self): 
        self.listOB = [] 
    def register(self, obj): 
        self.listOB.append(obj) 
    def notify(self): 
        for obj in self.listOB: 
            obj.notify(len(self.listOB)) 

#适配器模式 
class B1: 
    def http(self): 
        BaseB().http() 
#工厂模式 
class Factory: 
    def CreateA(self): 
        return BaseA() 
    def CreateB(self): 
        return BaseB() 


#单例模式 
class Logger(object): 
    log = None 
    @staticmethod 
    def new(): 
        
        import threading 
        #线程安全 
        mylock = threading.RLock() 
        mylock.acquire() 
        if not Logger.log: 
            Logger.log = Logger() 
        mylock.release() 
        
        return Logger.log 
    def write(self, v): 
        print 'Logger ', v 

if __name__ == "__main__": 
    a = Factory().CreateA() 
    b = Factory().CreateB() 
    
    objS = Observer() 
    objS.register(a) 
    objS.register(b) 
    
    a.compute() 
    b.compute() 
    objS.notify() 
    
    b1 = B1() 
    b1.http() 
    
    Logger.new().log.write('v') 

 


其他参考:
(1)python教程:hello world
(2)python教程:数据类型和运算规则
(3)python教程:元组,列表,词典
(4)python教程:分支、循环
(5)python教程:函数
(6)python教程:class
(8)python教程:几行代码搞定python 设计模式

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值