工廠方法模式(factory method):定義一個用于創建對象的接口,讓子類決定實例化哪一個類。工廠方法使一個類的實例化延遲到其子類。
工廠方法模式結構圖:
項目需求,創建一個雷鋒工廠,大學生可以去幫助別人,志愿者也可以幫助別人做事情。
1:創建一個雷鋒類,具有幫助別人掃地,洗衣,買米的功能。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
package factorymethodmodel; public class leifeng { public void sweep(){ system.out.println( "掃地" ); } public void wash(){ system.out.println( "洗衣" ); } public void buyrice(){ system.out.println( "買米" ); } } |
2:創建一個學雷鋒的大學生的類,繼承雷鋒類,可增加自己的功能。
1
2
3
4
5
6
7
8
9
10
|
package factorymethodmodel; /** * 學雷鋒的大學生 * @author 我不是張英俊 * */ public class universitystudent extends leifeng { //里面可以增加專屬大學生的功能 } |
3:創建一個社區志愿者的類,繼承雷鋒類。
1
2
3
4
5
6
7
8
9
10
|
package factorymethodmodel; /** * 學雷鋒的社區人員 * @author 我不是張英俊 * */ public class volunteer extends leifeng { } |
4:創建一個雷鋒工廠接口。
1
2
3
4
5
6
7
8
9
|
package factorymethodmodel; /**雷鋒工廠的總接口。 * @author 我不是張英俊 * */ interface leifengfactory { leifeng creatlenfeng(); } |
5:創建學雷鋒的大學生的工廠。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
package factorymethodmodel; /** * 學雷鋒的大學生工廠 * @author 我不是張英俊 * */ public class universitystudentfactory implements leifengfactory { @override public leifeng creatlenfeng() { return new universitystudent(); } } |
6:創建學雷鋒的志愿者工廠。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
package factorymethodmodel; /** * 學雷鋒的社區制志愿者 * @author 我不是張英俊 * */ public class volunteerfactory implements leifengfactory { @override public leifeng creatlenfeng() { // todo auto-generated method stub return new volunteer(); } } |
7:測試類
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
package factorymethodmodel; /** * 建立一個雷鋒工廠,大學生可以以雷鋒的名義起幫助別人,社區志愿者也可以。 * 工廠化模式:定義一個用于創建對象的接口,讓子類決定實例化哪一個類。 * 工廠方法使一個類的實例化延遲到其子類。 * @author 我不是張英俊 * */ public class test { public static void main(string[] args) { leifengfactory factory= new universitystudentfactory(); leifeng student =factory.creatlenfeng(); student.buyrice(); student.sweep(); student.wash(); } } |
8:控制臺
買米
掃地
洗衣
總結:簡單工廠方法違背了開放-封閉原則,而工廠方法克服了此問題,當需要增加新的,例如小學生學雷鋒的時候,工廠方法增加新的小學生工廠即可,然后再測試類中調用即可。
工廠方法模式還保持了封裝對象創建過程的有點。使得要更換對象的時候,不需要做打的改動就可以實現,降低了客戶程序與產品對象的耦合,工廠方法模式是簡單工廠模式的進一步抽象和推廣。由于使用了多態性,工廠模式保存了簡單工廠模式的有點,并且克服了缺點。但缺點是,沒增加一個產品,就必須增加一個工廠類,增加的額外的開發量。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:http://www.cnblogs.com/hrlizhi/p/7651981.html