自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

設(shè)計(jì)模式系列-工廠模式

開發(fā) 前端
工廠模式屬于創(chuàng)建型設(shè)計(jì)模式,是日常使用比較多的一種設(shè)計(jì)模式。比如Logback,Spring等框架中都大量使用該設(shè)計(jì)模式。

 

工廠模式屬于創(chuàng)建型設(shè)計(jì)模式。是日常使用比較多的一種設(shè)計(jì)模式。比如Logback,Spring等框架中都大量使用該設(shè)計(jì)模式。

上篇文章提到的簡(jiǎn)單工廠模式雖然在簡(jiǎn)單系統(tǒng)可以用一用,但是因?yàn)楣S類本身包含太多業(yè)務(wù)邏輯,而且如果想增加新的圖表類型,需要修改工廠類等缺點(diǎn)。所以我們的生產(chǎn)系統(tǒng)更多地使用工廠模式。

工廠模式為每一個(gè)類都定義一個(gè)單獨(dú)的工廠類,該工廠類只負(fù)責(zé)創(chuàng)建單一的產(chǎn)品。

舉個(gè)例子

通過工廠模式實(shí)現(xiàn)日志的創(chuàng)建,為不同種類的Logger分別創(chuàng)建不同類型的工廠。

來看一下UML圖:

來看一下代碼如何實(shí)現(xiàn)。

先來定義一個(gè)Logger接口,以及LoggerFactory接口。

  1. public interface Logger { 
  2.     void writeLogger(); 
  1. public interface LoggerFactory{ 
  2.     Logger createLogger(); 

分別定義FileLogger和FileLoggerFactory。

  1. public class FileLogger implements Logger { 
  2.     @Override 
  3.     public void writeLogger() { 
  4.         System.out.println("File logger"); 
  5.     } 

如果想增加新的Logger直接實(shí)現(xiàn)Logger和LoggerFactory就好了,看一下客戶端如何使用。

  1. public class FileLoggerFactory implements LoggerFactory { 
  2.     @Override 
  3.     public Logger createLogger() { 
  4.         //不同Logger的個(gè)性初始化工作 
  5.         Logger logger =  new FileLogger(); 
  6.         return logger; 
  7.     } 

總結(jié)

工廠模式是創(chuàng)建型模式之一,日常使用比較多,每類產(chǎn)品都有對(duì)應(yīng)的一個(gè)工廠類。工廠模式把簡(jiǎn)單工廠的內(nèi)部邏輯遷移到了客戶端,當(dāng)需要對(duì)功能擴(kuò)展時(shí),只需要修改客戶端就OK了。

 

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2020-10-19 09:28:00

抽象工廠模式

2021-09-29 13:53:17

抽象工廠模式

2013-11-26 16:29:22

Android設(shè)計(jì)模式

2021-03-06 22:50:58

設(shè)計(jì)模式抽象

2020-08-21 07:23:50

工廠模式設(shè)計(jì)

2011-11-17 16:03:05

Java工廠模式Clojure

2010-04-19 09:30:00

工廠模式PHP設(shè)計(jì)模式

2020-10-23 09:40:26

設(shè)計(jì)模式

2020-11-03 13:05:18

命令模式

2020-11-04 08:54:54

狀態(tài)模式

2009-01-15 10:55:29

JavaScript設(shè)計(jì)模式抽象工廠

2024-07-31 08:12:33

2010-10-09 09:25:35

Python工廠模式

2021-06-09 08:53:34

設(shè)計(jì)模式策略模式工廠模式

2022-01-14 09:22:22

設(shè)計(jì)模式橋接

2013-11-26 15:48:53

Android設(shè)計(jì)模式SDK

2021-03-02 08:50:31

設(shè)計(jì)單例模式

2020-10-21 14:29:15

原型模式

2020-11-09 08:20:33

解釋器模式

2020-10-20 13:33:00

建造者模式
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)