跳到主要內容


Python-設計模式-中介者模式

Python
設計模式
中介者模式
class ChatRoom:
      def __init__(self):
         self.UserList = [] 
      def showMessage(self, User, Message): 
         pass 
      def Registor(self, User): 
         self.UserList.append(User)
      def UnRegistor(self, User): 
         self.UserList.remove(User) 

class CreateChatRoom(ChatRoom): 
      def showMessage(self, User, Message): 
         if User in self.UserList: 
             print(User.UserName,Message) 
         else: print('User Not in System') 

class User: 
      def __init__(self): 
         self.UserName = '' 
         self.Mediator = ChatRoom() 
      def SetChatRoom(self, chatRoom): 
         self.Mediator = chatRoom 
      def showMessage(self, user,Message): 
         self.Mediator.showMessage(user,Message) 

class GM(User): 
      def __init__(self): 
          self.UserName = 'GM' 
          self.Mediator = None 

class VIP(User): 
      def __init__(self): 
          self.UserName = 'VIP' 
          self.Mediator = None class 

Guest(User): 
      def __init__(self): 
         self.UserName = 'Guest' 
         self.Mediator = None 

Chat = CreateChatRoom() 
G = GM() G.SetChatRoom(Chat) 
V = VIP() V.SetChatRoom(Chat) 
Guest1 = Guest() 
Guest1.SetChatRoom(Chat) 
Chat.Registor(G) 
Chat.Registor(V) 
Chat.Registor(Guest1) 
G.showMessage(G, 'I am GM') 
V.showMessage(V, 'I am VIP') 
Guest1.showMessage(Guest1, 'I am Guest1') 

程式碼說明

定義中介者Chatroom,實作CreateChatRoom,透過中介者溝通物件,User,實作物件GM、VIP、Guest,以下為執行過程,需要注意的是真正的聊天室,是在不同執行緒以及不同台電腦上執行。

留言

這個網誌中的熱門文章

Python-資料庫-mongodb-pymongo

Python 資料庫 mongodb-pymongo 安裝: linux、mac:pip3 install pymongo windows: import pymongo client = pymongo.MongoClient("mongodb://localhost:27017/") db = client['demo_db'] col = db['demo_col'] dict1 = { "name": "ab123ab456g", "day": "1890-04-05" } result = col.insert_one(dict1)  dict2 = [   { "name": "ki", "day": "1666-1-1"},   { "name": "aa", "day": "1222-11-11"},   { "name": "gg-gg", "day": "1333-02-22"},   { "name": "T-T", "day": "1444-03-02"},   { "name": "f-f", "day": "1555-01-01"} ] result = col.insert_many(dict2) result = col.find_one() print(result) results = col.find() for result in col.find(): print(result) results = col.find() query = {'...

語言學習-English-Lights

Song Lyric Title : Lights Singer :Ellie Goulding Album :  Bright Lights Release Date :  2011 I had a way then losing it all on my own I had a heart then but the queen has been overthrown And I'm not sleeping now the dark is too hard to beat And I'm not keeping up the strength I need to push me You show the lights that stop me turn to stone You shine it when I'm alone And so I tell myself that I'll be strong And dreaming when they're gone 'Cause they're calling, calling, calling me home Calling, calling, calling home You show the lights that stop me turn to stone You shine them when I'm alone Noises, I play within my head Touch my own skin and hope they'll still be there And I think back to when my brother and my sister slept In and on my place the only time I feel safe You show the lights that stop me turn to stone You shine it when I'm alone And so I tell myself that I'...

Python-開啟檔案-excel

Python 開啟檔案 excel 安裝: linux、mac :pip3 install openpyxl、pip3 install xlwt、pip3 install xlrd windows    :之後補上 程式碼說明 2007年版後 寫入 from openpyxl import Workbook,load_workbook wb = Workbook() ws = wb.active ws1 = wb.create_sheet('Mysheet') ws2 = wb.create_sheet('Mysheet', 0) ws1.title = 'New Title' print(wb.sheetnames) ws['A4'] = 4 ws.cell(row=4, column=2, value=10) wb.save('demo.xlsx')  讀取 wb_load = load_workbook('demo.xlsx')  sheet_ranges = wb_load['Sheet'] print(sheet_ranges['A4'].value) 2007年版前 寫入 import xlwt from datetime import datetime style0 = xlwt.easyxf('font: name Times New Roman, \ color-index red, bold on',num_format_str='#,##0.00') style1 = xlwt.easyxf(num_format_str='D-MMM-YY') wb = xlwt.Workbook() ws = wb.add_sheet('A Test Sheet') ws.write(0, 0, 124, style0) ws.write(1, 0, datetime.now(), sty...