跳到主要內容


Python-設計模式-建造者模式

Python
設計模式
建造者模式

範例一
class Product: 
   def __init__(self): 
      self.name=''
      self.parameter1 = ''
      self.parameter2 = ''
      self.parameter3 = ''

class Builder:
   def __init__(self):
      self.product = None 
   def SetName(self): 
      pass 
   def SetParameter1(self): 
      pass 
   def SetParameter2(self): 
      pass 
   def SetParameter3(self): 
      pass 

class Product1Builder(Builder): 
   def SetName(self): 
      self.product.name = 'Product1'
   def SetParameter(self): 
      self.product.parameter1 = '1-1' 
   def SetParameter(self): 
      self.product.parameter2 = '1-2' 
   def SetParameter(self):
      self.product.parameter3 = '1-3' 

class Direct: 
   def __init__(self):
      self.productBuilder = None 
   def Build(self): 
      if self.productBuilder != None: 
         return self.productBuilder.BuildProduct() 
      else: return None 

    def SetBuilder(self, builder): 
        self.productBuilder = builder 

    def BuildProduct(self): 
      self.productBuilder.product = Product() 
      self.productBuiilder.SetName() 
      self.productBuilder.SetParameter1()
      self.productBuilder.SetParameter2()
      self.productBuilder.SetParameter3()
      return self.product

d = Direct() 
d.SetBuilder(Product1Builder()) 
P1 = d.Build() 
P2 = d.Build() 
 print(P1 == P2) 
print(id(P1), id(P2))

範例二
class Product: 
   def __init__(self): 
      self.name=''
      self.parameter1 = ''
      self.parameter2 = ''
      self.parameter3 = ''

class Builder:
   def __init__(self):
      self.product = None 
   def SetName(self): 
      pass 
   def SetParameter1(self): 
      pass 
   def SetParameter2(self): 
      pass 
   def SetParameter3(self): 
      pass 
   def BuildProduct(self): 
      pass 

class Product1Builder(Builder): 
   def SetName(self): 
      self.product.name = 'Product1'
   def SetParameter(self): 
      self.product.parameter1 = '1-1' 
   def SetParameter(self): 
      self.product.parameter2 = '1-2' 
   def SetParameter(self):
      self.product.parameter3 = '1-3' 
   def BuildProduct(self): 
      self.product = Product() 
      self.SetName() 
      self.SetParameter1()
      self.SetParameter2()
      self.SetParameter3()
      return self.product
class Direct: 
   def __init__(self):
      self.productBuilder = None 
   def Build(self): 
      if self.productBuilder != None: 
         return self.productBuilder.BuildProduct() 
      else: return None 
    def SetBuilder(self, builder): 
        self.productBuilder = builder 

d = Direct() 
d.SetBuilder(Product1Builder()) 
P1 = d.Build() 
P2 = d.Build() 
 print(P1 == P2) 

print(id(P1), id(P2))


程式碼說明
builder 用來定義改有的生成介面
product 用來定義基本物件形式
product_N_builder 用來詳細定義生成細節
direct  用來設定使用何種builder,並生成。
buildProdut 用來定義生成流程,個人覺得可以放在Direct裡,也可以放在prodcutbuilder裡

留言

這個網誌中的熱門文章

程式語言學習概論(1)

程式語言 介紹

語言學習-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-資料庫-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 = {'...