如何把簡單代碼複雜化

就好比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 6而新項目須要JDK 8. 而後問客戶大家不能升級嗎,答案是不行,由於另一個企業級開發組給作的企業級解決方案只支持JDK 6。接着客戶把大家的架構師臭罵了一頓,你搞了那麼多設計就沒有想過可能會換JDK嗎?

相關文章
相關標籤/搜索