一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java設計模式學習之工廠方法模式

java設計模式學習之工廠方法模式

2021-01-17 14:41南國木棉 Java教程

這篇文章主要介紹了java設計模式學習之工廠方法模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下

工廠方法模式(factory method):定義一個用于創建對象的接口,讓子類決定實例化哪一個類。工廠方法使一個類的實例化延遲到其子類。

工廠方法模式結構圖:

java設計模式學習之工廠方法模式

項目需求,創建一個雷鋒工廠,大學生可以去幫助別人,志愿者也可以幫助別人做事情。

1:創建一個雷鋒類,具有幫助別人掃地,洗衣,買米的功能。

java" id="highlighter_483127">
?
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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 天天摸天天碰色综合网 | 99欧美视频| 五月激激激综合网色播免费 | 亚洲AV精品无码喷水直播间 | 国产成人无精品久久久久国语 | 四虎影视在线影院在线观看观看 | 星星动漫在线观看免费 | 干b视频在线观看 | 2020国产精品永久在线观看 | 午夜在线播放免费人成无 | 国产一区二区免费视频 | 性派对videofreeparty | 单亲乱l仑在线观看免费观看 | 麻豆性视频 | 国产高清国内精品福利 | 天天曰天天干 | 四虎在线视频免费观看视频 | 办公室强行丝袜秘书啪啪 | 国产精品极品美女自在线 | a级黄色视屏 | 乌克兰粉嫩摘花第一次 | 久久强奷乱码老熟女 | 国产普通话对白露脸流出 | 人与动人物人a级特片 | 国产午夜亚洲精品理论片不卡 | xxxxyoujizz护士 | 色五夜婷婷 | 欧美日韩国产亚洲一区二区 | 国产一区二区三区四 | 欧洲vodafone精品性 | 农村妇女野战bbxxx农村妇女 | 国产成人久久精品推最新 | 欧美精品久久久亚洲 | 亚洲国产精品久久网午夜小说 | 四虎永久免费地址 | 91制片厂制作传媒免费版樱花 | 成人资源影音先锋久久资源网 | 欧洲vodafonewi喷潮 | 免费一区二区 | 波多野结衣作品在线观看 | 精品无人乱码一区二区三区 |