跳到主要內容


Python-設計模式-工廠模式

Python

設計模式

以生產Pizza為例子

定義Pizza類別以及其子類別

class pizza: 
   def __init__(self):
      self.taste = 'material'
      self.place = ''
   def make(self):
       print('put %s on pizza' % self.taste)
   def bake(self):
       print('put in oven')
   def finish(self):
       print('You can eat')
   def PrintPlace(self):
       print(self.place)
   def run(self):
       self.make()
       self.bake()
       self.finish()
       self.PrintPlace()
class baconPizza(pizza):
   def __init__(self):
       super().__init__()
       self.taste = 'bacon'
class seafoodPizza(pizza):
   def __init__(self):
       super().__init__()
           self.taste = 'seafood'



簡單工廠模式


class PizzaSimpleFatory:
   def makePizza(str):
      if str == 'bacon':
         return baconPizza()
      elif str == 'seafood':
         return seafoodPizza()


class PizzaFactoryMethod:
   def makePizza(obj):
      return obj

class PizzaFactoryMethod2:
   def makeBaconPizza():
      return baconPizza()
   def makeSeafoodPiazz():
      return seafoodPizza()


工廠方法模式

class PizzaFactoryMethod:
   def makePizza(self):
      return baconPizza()


class PizzaFactoryMethod2:
   def makeSeafoodPiazz():
      return seafoodPizza()


抽象工廠模式

定義各個地方工廠,再將地方放入抽象工廠工。

class TaiwanPizzaFactory:
   def makePizza(obj):
      obj.place = 'Taiwan'
      return obj
class JapanPizzaFactory:
   def makePizza(obj):
      obj.place = 'Japan'
      return obj
class AmericaPiazzFactory:
   def makePizza(obj):
      obj.place = 'America'
      return obj
class PizzaAbstractFactory:
   def MakeFactory(obj):
      return obj

設計模式應用概念說明

在此種模式下,主要目的是要管理物件生成的介面,當物件的類別越來越多,使得他有多種屬性時,就會有不同工廠進行生產,因次進一步管理工廠,而出現抽象工廠。

思考面向,遊戲中的裝備,有分職業、男女、等級,要怎樣寫會比較好?
思考面向,螺絲,分尺寸、牙紋類別、長度等屬性,要怎樣寫會比較好?

留言

這個網誌中的熱門文章

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'...

程式語言學習概論(1)

程式語言 介紹