1.有關今天使用到原廠模式的的時候,用到抽象類別和抽象函數,在用子類繼承的時候,出現的很多錯誤,無數次在內心裡罵了n次fuck!!!!
好吧 ,我是新人,我要沉住氣,好好學習,不管啦,和大家分享一下今天學到一些很關鍵的知識。
大學裡教的東西很少設計原廠模式,那今天師傅讓我用工廠設計模式作一個項目的時候,哇塞,捉襟見肘,以前也只是那麼隨意一看,沒有運用的到實際中,現在要用的時候感覺真捉急。
好在有個好師傅,循序漸進講述簡單原廠模式和原廠模式的區別之類的,現在理解了之後其實也就是針對一個原則的區別:關閉-開放原則,在構造軟體的過程中,對擴張開放,但是對修改封閉。原廠模式雖然代碼顯得多,但很明顯做到這點。簡單工程模式,一旦要添加一個子類的時候,就要去人工手動的修改工廠類裡面的函數。但是在原廠模式裡面,我們只需要再添加一個工廠就好了。
說穿了,其實原廠模式是基於簡單原廠模式的。
上傳的簡單的計算機就是用原廠模式做的,相對比較簡單。我不和大家分析很多了,網上有很多分析的很好的,我這邊也有原廠模式的代碼。
言歸正傳,有關子類和父類,我覺得今天收益非淺
就是為什麼有子類和父類的存在,為什麼會有抽象這個概念,我覺得是因為很多事物之間都有共同點的原因。
大學三年,其實用的不多,也沒能深刻體會到。
2.在抽象類別裡面有很多抽象函數,這些函數為什麼抽象而不執行個體化直接調用呢?這是因為每個事物都有自己的類似的動作,但是又不相同。對於相似而又不相同的操作我們用抽象函數會方便很多很多。。。。
藍後將到抽象函數了,就引入兩個關鍵字:abstract和virtual
額,其實我主要用的是abstract,在父類裡聲明抽象函數,抽象函數是沒有方法體的,藍後在子類裡面重寫(override),而且只要在抽象類別裡面定義成抽象函數的,在子類裡面的一定要重寫!!!
藍後虛函數是有代碼的並明確允許子類去覆蓋,但子類也可不覆蓋,就是說可以直接用,不用重寫。用的有點不習慣啊。。。。
3.藍後偶就腦子抽筋的想到一個問題,如果在父類裡面有一個函數,不是抽象函數也不是虛函數,那麼你覺得如果在子類裡面重寫父類的這個方法呢?這個時候我們就用到new關鍵字,預設隱藏父類的同名函數,好的,俺還沒來的及做實驗,。。。。。要12點了,不行,俺得睡覺啦!!!晚安,各位IT界的同胞們。。。。。。