這段時間主要集中精力學習了以下建立型設計模式。
3個工廠模式(簡單工廠模式,工廠方法模式以及抽象工廠模式),
builder
生成器模式,
prototype
原型模式,
singleton
單件模式。其中,簡單工廠模式不是
gang of four的23
個模式中的乙個。
建立型模式主要就是要解決乙個
new的問題。常規的建立物件的方法:
girl g = new girl();
new的 問題是:實現依賴,不能應對具體例項化型別的變化。解決思路:封裝變化點,**變化就封裝**。建立型模式的共同點就是物件建立,因此就要封裝物件建立。 其中面向介面程式設計,依賴介面而非依賴實現,是非常好的乙個辦法。當然了,用抽象類也可以的。簡單工廠模式就在這種情況下應運而生了。把
girl
抽象為乙個介面,然後有美
girl
(american girl
),土girl
(turkey girl
),點點點。這樣,我們在上層架構的時候,在需要用到
girl
的地方,用
inte***ce girl
來替換就好了,而不用管它是美還是土,這就是所謂的依賴介面,不依賴實現。恩。也就是將所要建立的具體物件工作延遲到子類,從而實現一種擴充套件(而非更改)的策略,較好的解決了使用者和具體類之間的耦合關係。
當然了,
singleton
的主要作用是解決了實體物件個數的問題。其他建立型模式解決的都是
new所帶來的耦合性關係。
factory method
模式解決了單個物件的需求變化,
abstract factory
模式解決了系列物件的需求變化,
builder
模式解決了物件部分的需求變化。
builder
: 在軟體系統中,有時候面臨著乙個複雜物件的建立工作,其通常由各個部分的子物件用一定的演算法構成;由於需求的變化,這個複雜物件的各個部分經常面臨著劇烈 的變化,但是將他們組合在一起的演算法卻相對穩定。根據封裝變化的原理,我們把複雜物件的各個部分隔離出來,從而保持系統中的穩定構建演算法不隨著需求改變而 改變。
prototype
:使用原型例項指定建立物件的種類,然後通過拷貝這些原型來建立新的物件。
factory method, abstract factory, builder
都需要乙個額外的工廠類來負責例項化具體物件,而
prototype
則是通過原型,乙個特殊的工廠類來
clone
具體物件。
在實際設計過程中,如果遇到易變的具體類,起初的設計通常從
factory method
開始,當遇到更多的複雜變化時,再考慮重構為其他三種工廠模式(
abstract factory, builder, prototype)。
多用,多理解,多思考,多看看這方面的書就能更好的理解oo,
ood,
oop,設計模式等思想。經驗也是非常重要的,記得在實際專案中積累這種經驗。恩。
come on, baby!
階段性學習總結
我記得剛開學第一節課的時候,婁老師曾說過學期末會給排名靠前的同學發放小黃衫,沒想到這個獎勵來得這麼突然 手動開心 能夠成為第一批獲得小黃衫的人是對我這一學期以來的努力的肯定,但同時也讓我感到了幾分壓力,使我不太敢懈怠,而這種壓力也將支援我繼續前行。在這裡,我得先感謝一下進入大學以來第乙個讓我感到耳目...
Raytrace學習的階段性總結
最近乙個月一直在學習raytrace,從理論到 實現,之前最近才終於有了乙個比較完整的版本,遂打算把之前的一些學習經歷寫出來。raytrace又稱光線跟蹤,業界公認此演算法為turner whitted在1980年提出,而它本身又是由原來的光線投射演算法 ray casting 演變而來的,ray ...
tensorflow階段性學習總結(一)
feed,fetch 可以為任意的操作 arbitrary operation 賦值或從中獲取資料,相當於鏟子 通過呼叫tf.device 方法來決定機器的那些cpu或者gpu參與計算。如 with tf.device gpu 1 表示呼叫機器的第二個gpu參與計算。softmax regressi...