<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          架構師動手寫了一個 helloworld!

          共 1688字,需瀏覽 4分鐘

           ·

          2022-02-15 11:45

          架構師不造工具,今天造了一個 helloworld!

          今天我們不聊技術,聊一聊過渡設計。

          我們以 helloworld 為例!普通程序員寫了一個 Java 輸出 hello world 程序!架構師一看,滿臉不屑。到處找釘子,你的程序太 low 了,不支持多語言,不支持友好擴展!

          然后架構師動手寫了一個 hello world!

          架構師的思路如下:

          main 函數里 print 一下?

          太面向過程,太 low 了。得封裝一個類。叫 Printer,Printer 有個成員方法,叫 print。

          但是!光一個類太 low 了,以后要是有不同的實現(xiàn)怎么辦?所以得加一個接口。PrinterInterface。

          但是!interface 是沒有實現(xiàn)的,還是要有默認實現(xiàn)才行。所以得加個抽象類,AbstractPrinter 實現(xiàn) PrinterInterface,然后 Printer 繼承 AbstractPrinter。

          但是!你有了那么一套,該怎么創(chuàng)建實例呢?直接 new Printer()?太 low 了,那叫實現(xiàn)依賴??隙ú恍械?,所以要搞一個工廠類,PrinterFactory,PrinterFactory 用 PrinterInterface 返回實例,這樣就隱藏了實現(xiàn)細節(jié)了。

          但是!PrinterFactory 本身也是實現(xiàn)類啊,太 low 了,所以得有 PrinterFactoryInterface,AbstractPrinterFactory。

          而且在 PrinterFactory 里面該怎么寫呢?直接 new Printer() ? 太 low 了。還是實現(xiàn)依賴。

          最后,你要把這一堆玩意在代碼里組裝起來,也太難看了,各種 new 實現(xiàn)類。太 low!

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

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

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

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

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

          架構師版的helloworld

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

          哦對了,在這一切發(fā)生之前,還得畫 UML 圖呢。三年后項目完工了,部署到客戶的服務器上一跑,立馬崩潰,一地的 stack trace。

          原來客戶服務器上用的是 JDK 8 而新項目需要 JDK 11。然后問客戶你們不能升級嗎,答案是不行,因為另外一個企業(yè)級開發(fā)組給做的企業(yè)級解決方案只支持 JDK 8。接著客戶把你們的架構師臭罵了一頓,你搞了那么多設計就沒有想過可能會換 JDK 嗎?

          內部 code review,架構師還在洋洋得意的說,我雖然不經常寫代碼,但我的代碼擴展性無人能敵!

          架構師紙上談兵

          會后一堆人在議論,架構師好像少寫了單元測試;文檔也沒有;還有人說架構師的單節(jié)點 hello world 掛了怎么辦?

          得用上微服務,redis,nginx,docker,k8s 等等 devops 。。。

          全部得安排上,干著造炮仗的事,操著造核彈的心!

          瀏覽 38
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久久久久久成人无码 | 日逼视屏网 | 国产白丝袜足交网站大全 | 99这里都是精品 | 精品少妇无码中文字幕在线 |