2016 12 12 學習日記 簡單工廠模式

2021-07-25 08:25:19 字數 1565 閱讀 2592

專業課《軟體設計模式》學了好幾周,完全還沒進入狀態,還停留在上半學期的php中。這幾天溫習了下c#,準備好好自學下軟體設計模式,不然期末要掛呀

day one: 簡單工廠模式

簡單工廠模式的實質是由乙個工廠類根據傳入的引數,動態決定應該建立哪乙個產品類(這些產品類繼承自乙個父類或介面)的例項。

該模式中包含的角色及其職責

工廠(creator)角色

簡單工廠模式的核心,它負責實現建立所有例項的內部邏輯。工廠類的建立產品類的方法可以被外界直接呼叫,建立所需的產品物件。

抽象產品(product)角色

簡單工廠模式所建立的所有物件的父類,它負責描述所有例項所共有的公共介面。

具體產品(concrete product)角色

是簡單工廠模式的建立目標,所有建立的物件都是充當這個角色的某個具體類的例項。

類圖:優點:簡單工廠模式將物件的建立和物件本身的處理分離開來,降低了系統的耦合度,便於修改;

在有所需求時,只需傳入正確的引數,通過工廠類例項化出合適的物件

缺點:違反高內聚責任分配原則,將全部建立邏輯集中到了乙個工廠類中,它所建立的類只能是事先考慮到的,如果需要新增新的類,則就需要改變工廠類。

例項:簡單電視機工廠

某電視機廠專為各知名電視機品牌代工生產各類電視機,當需要海爾牌電視機時只需要在呼叫該工廠的工廠方法時傳入引數「haier」,需要海信電視機時只需要傳入引數「hisense」,工廠可以根據傳入的不同引數返回不同品牌的電視機。現使用簡單工廠模式來模擬該電視機工廠的生產過程。

抽象產品類tv

包含了所有產品都具有的業務方法play()

public class tv

}

具體產品類 haiertv

繼承於tv是抽象產品tv的子類,實現了tv中的業務方法play()

class haiertv :tv

}

具體產品類 hisensetv

繼承於tv是抽象產品tv的子類,實現了tv中的業務方法play(),不同的具體產品,play()方法不同

class hisensetv : tv

}

工廠類tvfcatory

工廠類,整個產品的核心,提供了靜態工廠方法producetv(),根據引數值得不同例項化具體產品,返回相應物件。

public class tvfactory

else if (brand == "hissense")

else

return tv;}}

客戶端**

class program

}

總結:對物件導向的特性,有了進一步的了解。但還是不能夠很熟練的運用,需要更多地總結、熟悉吧。每天熟悉乙個模式,在期末考試之前做到熟練掌握!加油啊!考試月,各個課程都要上心,將壓力轉化為動力。go go go!                        

2016.12.12

學習計畫2016 12 12

上週沒有寫計畫,感覺還是要堅持下去,有時候每週還是發生了一些事的。注意一下 1.有時候感覺自己走偏了,貌似自己喜歡去實際實驗一些技術,但是和自己的dip cv ml方向有衝突 應該把重心放在一些機器學習的演算法上,然後基於opencv和python去實驗。2.對於linux只是乙個工具 3.對於自己...

軟工新人自學爬蟲日記 6

import requests from bs4 import beautifulsoup defgethtmltext url return def fillunivlist ulist,html pass defprintunivlist ulist,num print suc str num ...

學習日記 3

今天很早同學就來叫我去自修了,休息了這麼多天,是應該開始勤奮了。不過去到教學樓真的有點後悔,那裡在施工,嘈還不說,連電都停了,但既然去到也就在那裡自修了。開了窗,偶爾有點風,但那只是偶爾,更多的時間是一點風都沒有,悶熱 擦掉桌面和椅上的一層灰塵,就開始看書了。今天看了很多,也很累,現在就回憶一下 看...