本文實例講述了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')更多關于Python相關內容感興趣的讀者可查看本站專題:《Python圖片操作技巧總結》、《Python數據結構與算法教程》、《Python Socket編程技巧總結》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設計有所幫助。
新聞熱點
疑難解答
圖片精選