工廠模式的C 實現

2021-08-07 18:02:23 字數 2509 閱讀 2165

class factorypattern

public

class 補血丹 : 丹藥

}public

class 補氣丹 : 丹藥

}//當我需要 補血丹 的時候就 new(例項化)乙個 補血丹類

//當我需要 補氣丹 的時候就 new(例項化)乙個 補氣丹類

//當我需要 補**丹 的時候就 new(例項化)乙個 補**丹類

//如果有一百個地方需要丹藥就要去例項化一百次,一旦丹藥除了問題改了一點點,豈不是要找到這一百個地方作修改

//由此可使用簡單工廠模式

//定義乙個工廠類來專門例項化這些丹藥類,就算錯了我也只改工廠類這邊

public

class 煉丹房

return result;}}

//******factorypattern.丹藥 ss = ******factorypattern.煉丹房.生產丹藥("補血丹");

//ss.生產過程();

//通過這種方式呼叫就不用每個地方都去例項化

//那麼問題來了,現在我拿到了乙個新的單方,補魂丹

public

class 補魂丹 : 丹藥

}//這樣是不是表示我要去工廠類的靜態方法的switch語句中加一種補魂丹的例項化(上面注釋掉的部分)

//本來這樣做沒什麼,無非就是擴充套件(篡改)了別人的工廠類

//由此,我們使用工廠方法模式,擴充套件丹藥工廠

//首先抽象出乙個工廠類

public

abstract

class 總煉丹房

//每種丹藥乙個單獨的工廠

public

class 補血丹煉丹房 : 總煉丹房

}public

class 補氣丹煉丹房 : 總煉丹房}/*

* //factorypattern.總煉丹房 s = new factorypattern.補血丹煉丹房();

* //factorypattern.總煉丹房 s = new factorypattern.補魂丹煉丹房();

* factorypattern.總煉丹房 s = new factorypattern.補氣丹煉丹房();

* factorypattern.丹藥 ss = s.生產丹藥();

* ss.生產過程();

* 呼叫

*///現在我拿到補魂丹,也可單獨弄個工廠生產補魂丹

//再加多少個單方都可以擴充套件

public

class 補魂丹煉丹房 : 總煉丹房

}//那麼問題又來了,以上說的補血丹都是一品的,現在我公升級了,需要二品的丹藥才能滿足

//那麼抽象工廠模式就來了

//那麼丹藥就應該分成有品級的

public

abstract

class 丹宗

public

abstract

class 一品丹藥

public

class 一品補血丹 : 一品丹藥

}public

class 一品補氣丹 : 一品丹藥

}public

abstract

class 二品丹藥

public

class 二品補血丹 : 二品丹藥

}public

class 二品補氣丹 : 二品丹藥

}public

class 新補血丹煉丹房 : 丹宗

public

override 二品丹藥 生產二品丹藥()

}public

class 新補氣丹煉丹房 : 丹宗

public

override 二品丹藥 生產二品丹藥()

}//現在我拿到補魂丹單方

public

class 一品補魂丹 : 一品丹藥

}public

class 二品補魂丹 : 二品丹藥

}public

class 新補魂丹煉丹房 : 丹宗

public

override 二品丹藥 生產二品丹藥()}/*

* //factorypattern.丹宗 s = new factorypattern.新補血丹煉丹房();

* factorypattern.丹宗 s = new factorypattern.新補氣丹煉丹房();

* //factorypattern.丹宗 s = new factorypattern.新補魂丹煉丹房();

** factorypattern.一品丹藥 ss = s.生產一品丹藥();

* //factorypattern.二品丹藥 ss = s.生產二品丹藥();

** ss.生產過程();

* 呼叫

*///我以上說都是以 單方 變化來解釋,你也可以以品級來作為變化值,實際專案中也是一樣,選擇乙個可控的變化值

//比如:品級變化,那麼丹宗類下面的將不再是一品丹藥二品丹藥而是不變的補血丹和補氣丹,變化的是品級,擴充套件的也會是品級

//小學語文,海涵

}

設計模式C 實現 工廠模式

軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用c 寫了個小例子,加深一下理解。主要參考 大話設計模式 和 設...

設計模式C 實現 工廠模式

軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用c 寫了個小例子,加深一下理解。主要參考 大話設計模式 和 設...

C 實現抽象工廠模式

using system public class fighttank fightiname public class peopletank peopleiname public class fightplane fightiname public class peopleplane peoplei...