<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>

          設(shè)計(jì)模式,牛逼!

          共 2251字,需瀏覽 5分鐘

           ·

          2021-01-21 17:48

          大家好呀,想死你們了。

          時(shí)不時(shí)就有讀者私信我,“二哥,我的代碼寫得很爛,該怎么辦呀?”

          寫代碼確實(shí)是門手藝活,這是我們程序員不得不承認(rèn)的一個(gè)事實(shí),畢竟要用手指頭來敲啊!不是手藝活是啥(笑)

          簡單來分析一下代碼寫得爛的原因哈。其一,可能是剛?cè)腴T,代碼寫得少,如果我們滿打滿算只寫過一兩千行代碼,是不可能寫出多優(yōu)雅的代碼的。其二,可能我們不懂設(shè)計(jì)模式,設(shè)計(jì)模式是軟件設(shè)計(jì)中常見問題的典型解決方案,它們就像能根據(jù)需求進(jìn)行調(diào)整的預(yù)制藍(lán)圖, 可用于解決代碼中反復(fù)出現(xiàn)的設(shè)計(jì)問題,如果不懂設(shè)計(jì)模式的話,遇到這些問題就只能抓瞎了。

          這么說吧,設(shè)計(jì)模式玩得爐火純青,寫出的代碼就更優(yōu)雅,閱讀起來也會(huì)更加舒服,可維護(hù)性、可擴(kuò)展性就更強(qiáng)

          說到這,我確信大家已經(jīng)了解設(shè)計(jì)模式的重要性了!那該怎么學(xué)好呢?

          二哥來推薦一個(gè)學(xué)習(xí)網(wǎng)站:Refactoring Guru。

          網(wǎng)址如下所示:

          https://refactoring.guru

          這雖然是一個(gè)國外的網(wǎng)站,卻神奇的實(shí)現(xiàn)了中文化國際化,愛了愛了,無情地愛了。據(jù)作者說,他建站的初衷就是為了幫助我們程序員,快速地掌握設(shè)計(jì)模式,但把網(wǎng)站做到這種用心的程度,我只能情不自禁地點(diǎn)贊了!

          來看一下設(shè)計(jì)模式的目錄吧(下圖中只展現(xiàn)了創(chuàng)建型模式和結(jié)構(gòu)型模式中的一部分,還有行為模式):

          每個(gè)模式都會(huì)對應(yīng)一篇圖文并茂的文章,閱讀起來就好像在讀繪本一樣,生動(dòng)有趣,令人印象深刻,學(xué)起來就沒有半點(diǎn)枯燥的感覺。來看一下工廠方法模式的一部分內(nèi)容截圖,這圖片的質(zhì)量,確實(shí)高啊,不服不行!

          配套的代碼示例也非常完整,來看一下 Java 版的:

          public?class?WindowsButton?implements?Button?{
          ????JPanel?panel?=?new?JPanel();
          ????JFrame?frame?=?new?JFrame();
          ????JButton?button;

          ????public?void?render()?{
          ????????frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          ????????JLabel?label?=?new?JLabel("Hello?World!");
          ????????label.setOpaque(true);
          ????????label.setBackground(new?Color(235,?233,?126));
          ????????label.setFont(new?Font("Dialog",?Font.BOLD,?44));
          ????????label.setHorizontalAlignment(SwingConstants.CENTER);
          ????????panel.setLayout(new?FlowLayout(FlowLayout.CENTER));
          ????????frame.getContentPane().add(panel);
          ????????panel.add(label);
          ????????onClick();
          ????????panel.add(button);

          ????????frame.setSize(320,?200);
          ????????frame.setVisible(true);
          ????????onClick();
          ????}

          ????public?void?onClick()?{
          ????????button?=?new?JButton("Exit");
          ????????button.addActionListener(new?ActionListener()?{
          ????????????public?void?actionPerformed(ActionEvent?e)?{
          ????????????????frame.setVisible(false);
          ????????????????System.exit(0);
          ????????????}
          ????????});
          ????}
          }

          當(dāng)然了,代碼示例不只有 Java 版的,還有 C#、C++、Python、Go 等 8 種常見的編程語言。

          這種圖文并茂 + 代碼示例的學(xué)習(xí)方式,極大地加深了我們程序員對知識的吸收。還有什么贊美的詞語?學(xué)富五車的我竟然有點(diǎn)詞窮了。總之,如果大家也想學(xué)好設(shè)計(jì)模式,趕快點(diǎn)吧!

          平臺上還提供了離線版 PDF 的購買入口。如果大家需要一份免費(fèi)開源的,我就只能把我珍藏了 3 個(gè)月的《重學(xué)設(shè)計(jì)模式》貢獻(xiàn)出來了,截取一部分內(nèi)容供大家預(yù)覽下。

          里面有不少圖文參照了 Refactoring Guru 這個(gè)網(wǎng)站,但也加入了作者自己的思考和理解,讀起來也更接地氣一點(diǎn)。按照作者說的:

          很高興你能拿到這本書,如果你能堅(jiān)持看完并按照書中的例?進(jìn)行實(shí)踐,那么在編程開發(fā)的世界里,就?多了了?個(gè)可以寫出良好代碼的?,同時(shí)也為架構(gòu)師培養(yǎng)儲備了了?個(gè)?才。

          如果大家對這份 PDF 感興趣的話,可以通過下面的方式獲取。

          第一步,掃碼或者長按識別下面的二維碼,關(guān)注「沉默王二」公眾號:

          第二步,在公眾號后臺發(fā)送 010 獲取下載鏈接。

          最后,求個(gè)贊吧!再冷的天,也抵擋不住我們學(xué)習(xí)的熱情

          瀏覽 82
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  大鸡吧网站在现看 | 强干人妻 | 婷婷逼| 91精品国产乱码 | 69视频在线免费看 |