如何把一段簡單的代碼變複雜?(來漲漲見識)

來源:zhihu.com/question/277243683/answer/393676961

這問題你應該去問企業級Java架構師。

就比如print一句hello world吧。main函數裏print一下?太面向過程,太low了。

得封裝一個類。叫Printer. Printer有個成員方法,叫print。

但是!光一個類太low了,以後要是有不同的實現怎麼辦?所以得加一個接口。PrinterInterface。

但是!interface是沒有實現的,還是要有默認實現纔行。所以得加個虛擬類,AbstractPrinter實現PrinterInterface,然後Printer繼承AbstractPrinter。

但是!你有了那麼一套,該怎麼創建實例呢?直接new Printer()?太low了,那叫實現依賴。肯定不行的,所以要搞一個工廠類,PrinterFactory,PrinterFactory用PrinterInterface返回實例,這樣就隱藏了實現細節了。

但是!PrinterFactory本身也是實現類啊,太low了,所以得有PrinterFactoryInterface, AbstractPrinterFactory.

而且在PrinterFactory裏面該怎麼寫呢?直接new Printer()? 太low了。還是實現依賴。

最後,你要把這一堆玩意在代碼裏組裝起來,也太難看了,各種new實現類。太low!

好在我們有個高級玩意,叫依賴注入!把程序對象結構全寫到配置文件裏面。這一套當然是不能自己造輪子的。配置Spring吧。搞了那麼多lib,靠命令行或者IDE的項目管理肯定不夠啊,得有依賴管理。Maven啊Gradle啊使勁上。

最最後,要print的東西怎麼傳給程序呢?硬編碼?命令行傳參數?太low!當然得寫在XML裏頭。

光是XML當然還不夠企業級,再加上DTD驗證吧。

然後就涉及到了XML解析的問題了。代碼裏直接操起parser嗎?太low! 當然要寫個parser的包裝類,interface, abstract class, implementation class, factory class再來一套。畢竟,不能依賴實現啊,以後我要是換parser了怎麼辦。

所以最後是成品是一堆配置文件,一堆jar,compile出來的程序200MB。

IDE得裝上300個插件,打開項目硬盤響老半天喫掉2GB內存,然後一堆插件彈提示要求升級。

哦對了,在這一切發生之前,還得畫UML圖呢。

三年後項目完工了,部署到客戶的服務器上一跑,立馬崩潰,一地的stack trace。原來客戶服務器上用的是JDK 5而新項目需要JDK 6. 然後問客戶你們不能升級嗎,答案是不行,因爲另外一個企業級開發組給做的企業級解決方案只支持JDK 5。接着客戶把你們的架構師臭罵了一頓,你搞了那麼多設計就沒有想過可能會換JDK嗎?

近期熱文推薦:

1.1,000+ 道 Java面試題及答案整理(2022最新版)

2.勁爆!Java 協程要來了。。。

3.Spring Boot 2.x 教程,太全了!

4.別再寫滿屏的爆爆爆炸類了,試試裝飾器模式,這纔是優雅的方式!!

5.《Java開發手冊(嵩山版)》最新發布,速速下載!

覺得不錯,別忘了隨手點贊+轉發哦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章