設計模式之工廠方法

2021-07-22 13:35:31 字數 1907 閱讀 2107

言歸正傳,後來 我們開始了重頭戲——設計模式 工廠三姐妹,因為十三期的師弟沒有接觸過這些知識二來因為自己學藝不精,所以當時講得有些吃力,這就尷尬了、是吧;為了挽回一點顏面,當下決定回去寫一篇部落格,但是(經常說「但是」不好)不過因為因為一直奮戰在itoo、這個總結沒有及時地動手去做,不過現在有時間了、so  here we go~~

lass leifeng //雷鋒類

public void wash()

public void buyrice() }

//大學生:繼承雷鋒類 具有了父類雷鋒的屬性和方法

class undergraduate:leifeng{}

//志願者:繼承雷鋒類

class volunteer:leifeng{}

//雷鋒工廠 把工廠類抽象出乙個介面

//有唯一的方法:建立抽象產品的工廠方法

inte***ce ifactory

//大學生:實現工廠介面 生產具體產品

class undergraduatefactory:ifactory

}//志願者:實現雷鋒工廠介面

class voluntee***ctory:ifactory

}//客戶端呼叫 大學生學雷鋒服務人民

//強制多型,強制型別轉換 向上型別的轉換

ifactory factory =new undergraduatefactory();

leifeng student=factory.createleifeng();

student.buyrice();

student.sweep();

student.wash();

寫了一些注釋,大家這麼clever**應該很容易理解;比較新的知識點是:強制多型,強制多型的原則:將值集較小(占用儲存空間較小)的型別變換成值集包含了前者(占用儲存空間大)的型別,反之可能發生對值得損傷;由這個引出類向上轉型、向下轉型:

向上轉型:就是咱們這裡的

ifactory factory =new undergraduatefactory();

解釋這個知識的時候網路上習慣於用「動物和狗」這個例子;這裡再用多沒有創意,今天拿「動物和貓」做例子!父類為動物,子類為貓,父類有乙個跑()的方法,貓繼承並覆蓋了乙個跑的方法,在子類重寫()該方法:

animal a =new cat();//向上轉型

a.run();//呼叫貓的方法

這是對 動物 方法的擴充,即 動物 的物件可訪問 狗 從 動物 中繼承來的和 狗 複寫動物的方法;這個例子中有執行效果c#——向上轉型

這是講的是「裝飾模式」,裝飾模式也是比較重要的乙個設計模式,當然咱們這裡是不講的,只是借用一些例子來幫助大家理解;product是乙個介面,ice、chocolate還有milk等類實現product介面,除了product中生產咖啡他們還有各自新增佐料的方法,還是符合強制多型原則的;

當父類引用指向子類物件時,如果是呼叫非靜態方法,此方法就按子類的執行。

如果呼叫的是成員變數,此變數就是父類的值。

向下轉型時不是肯定能成功的。打個比方,所有的狗一定是動物,但是動物不一定都是貓,你得先在**中判斷一下。

莫名這個knowledge涉及到了靜態方法和非靜態方法;這個下篇寫吧、部落格容量大了make people tired easily 

thanks for your time  

設計模式之工廠方法

工廠方法是在簡單工廠的基礎上的進一步抽象,在簡單工廠中,所有的物件都是通過乙個工廠來建立,在工廠方法中,每個物件都有特定的工廠來建立。抽象介面 車 package com.yf.designpattern.factorymethod public inte ce car 具體實現類 寶馬和賓士 pa...

設計模式之工廠方法

軟體架構師需要關係設計模式 當有提示時 客戶端最常用的是彈出message對話方塊 服務端最常用的是寫日誌檔案。下面的例子假定五個開發組參與 核心邏輯組 class ishow class iglobe void init iglobe globe,uint uid 服務端業務邏輯組 namespa...

設計模式之工廠方法

上篇我們提到了為了更好地解耦,我們引入了簡單工廠設計模式。但是簡單工廠模式還存在問題,就是乙個工廠不是萬能的,我們不能要求乙個工廠既生產這個,又生產那個。為解決這個問題,我們來學習一下工廠方法設計模式。簡單地說,工廠方法就是把生產不同品牌的工廠分離開來,乙個工廠專注於生產乙個品牌,生活化些,就是我們...