設計模式學習的階段性總結(建立型設計模式part)

2021-06-15 20:22:54 字數 1579 閱讀 7626

這段時間主要集中精力學習了以下建立型設計模式。

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