簡單工廠模式,作為oo ,乙個較為簡單的建立者設計模式。其主要思想,通過介面或繼承建立 不同的子類。
現在乙個dom解析器作為父類,其中xml,soup 分別作為兩個不同解析方式,作為子類。
vechicl 的建立 如下
1具體子類的實現方式#外部依賴的介面,它遮蔽了我具體使用的第三方庫
2class
***omtree:
3def
__init__
(self,htmlstream):
4 self.htmlstream =htmlstream56
defgetlinklist(self):
7pass89
defgetimagelist(self):
10pass
1112
defelementtostring(self,element):
13pass
1415
defgetattrvalueofelement(self,element,attname):
16pass
xml
1soapfrom lxml.html import
tostring
2from lxml.html.soupparser import
fromstring
3class
***omtreewithlxml(***omtree):
4def
__init__
(self,htmlstream):
5 ***omtree.__init__
(self,htmlstream)
6 self._tree =fromstring(self.htmlstream)78
defgetlinklist(self):
9 list =
10for i in
self._tree.iter():
11if i.tag == 'a'
:1213return
list
1415
defgetimagelist(self):
16 list =
17for i in
self._tree.iter():
18if i.tag == '
img':19
20return
list
2122
defelementtostring(self,element):
23return
tostring(element)
2425
defgetattrvalueofelement(self,element,attname):
26if attname in
set(element.keys()):
27return
str(element.attrib[attname])
28else:29
return
""
from beautifulsoup importcreatorbeautifulsoup
class
***omtreewithsoup(***omtree):
def__init__
(self,htmlstream):
***omtree.
__init__
(self,htmlstream)
self._tree =beautifulsoup(self.htmlstream)
defgetlinklist(self):
return self._tree.findall('a'
)
defgetimagelist(self):
return self._tree.findall('
img'
)
defelementtostring(self,element):
return
str(element)
defgetattrvalueofelement(self,element,attname):
ifhasattr(element,attname):
return
str(element[attname])
else
:
return
""
1簡單的測試 :#工廠模式
2def createdomtree(htmlstream,type='
soup'):
3if type == "
soup":
4return
***omtreewithsoup(htmlstream)56
if type == "
lxml":
7return
***omtreewithlxml(htmlstream)89
return none
if這就是乙個簡單的使用python 實現的 簡單工廠設計模式。__name__ == "
__main__":
s1 = '''
beiai
s1 domtree = createdomtree(s1,'
soup')
list =domtree.getimagelist()
for i in
list:
print domtree.getattrvalueofelement(i,'
src'
)
print domtree.elementtostring(i)
設計模式 工廠模式(簡單工廠模式和方法工廠模式)
一 簡單工廠模式 簡單工廠模式概述 又叫靜態工廠方法模式,它定義乙個具體的工廠類負責建立一些類的例項 優點 客戶端不需要在負責物件的建立,從而明確了各個類的職責 缺點 這個靜態工廠類負責所有物件的建立,如果有新的物件增加,或者某些物件的建立方式不同,就需要不斷的修改工廠類,不利於後期的維護 動物類 ...
設計模式之簡單工廠 工廠方法模式 抽象工廠模式
這裡講三種模式放在一起說明,是因為三種模式關聯性很強 抽象工廠模式簡單化以後就是工廠方法模式,工廠方法模式再簡單化就是簡單工廠模式 簡單工廠模式並沒有被列入到gof的設計模式中 public class factory 簡單工廠類,實現建立產品物件 class factory return prod...
Python下的設計模式學習(1) 簡單工廠模式
使用物件導向的思想設計乙個簡單的計算器類 基於物件導向的四個原則即使得 具有可維護,可復用,可擴充套件,靈活性好的特點 我們需要通過封裝,繼承,多型把程式的耦合度降低。將程式的業務邏輯於介面邏輯分開,讓它們之間的耦合度下降,才可以達到容易維護和擴充套件。比如該問題,使用者只需要知道使用特定的符號,以...