欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-14 21:40:46
...
#!/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 设计模式

 

相关标签: Python 设计模式