python爬蟲 關於requests.exceptions.ConnectionError 等問題
阿新 • • 發佈:2020-12-12
說明:嚴格來說,簡單工廠模式不是GoF總結出來的23種設計模式之一。
意圖:
定義一個用於建立物件的介面,讓子類決定例項化哪一個類。Factory Method使一個類的例項化延遲到其子類。
適用性:
當一個類不知道它所必須建立的物件的類的時候。
當一個類希望由它的子類來指定它所建立的物件的時候。
當類將建立物件的職責委託給多個子類中的某一個。
示例程式碼:
Circle(Shape子類 or 派生類):作用為畫圓形
Rectangle(Shape子類 or 派生類):作用為畫矩形
ShapeFactory(新式類):該類作用為使用者可根據該類物件建立指定的Shape子類物件(Circle or Rectangle)
優點:客戶端不需要修改程式碼。
缺點: 當需要增加新的運算類的時候,不僅需新加運算類,還要修改工廠類,違反了開閉原則。
#!/usr/bin/env python #-*- coding:utf-8 -*- ''' simple Factory Method ''' class Shape(object): ''' 父類 '''執行結果: Shape(父類 or 基類):提取出所有子類的重複方法程式碼def draw(self): raise NotImplementedError class Circle(Shape): ''' Shape子類 ''' def draw(self): print('draw circle') class Rectangle(Shape): ''' Shape的子類 ''' def draw(self): print('draw Rectangle') class ShapeFactory(object): ''' 工廠模式:暴露給使用者去呼叫的, 使用者可通過該類進行選擇Shape的子類進行例項化''' def create(self, shape): if shape == 'Circle': return Circle() elif shape == 'Rectangle': return Rectangle() else: return None fac = ShapeFactory() #例項化工廠類 obj = fac.create('Circle') #例項化Shape的Circle子類 obj.draw()