來源: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開發手冊(嵩山版)》最新發布,速速下載!
覺得不錯,別忘了隨手點贊+轉發哦!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/476942.html
標籤:Java
上一篇:基本運算子
