天天看點

設計模式,牛逼!

大家好呀,想死你們了。

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

寫代碼确實是門手藝活,這是我們程式員不得不承認的一個事實,畢竟要用手指頭來敲啊!不是手藝活是啥(笑)

簡單來分析一下代碼寫得爛的原因哈。其一,可能是剛入門,代碼寫得少,如果我們滿打滿算隻寫過一兩千行代碼,是不可能寫出多優雅的代碼的。其二,可能我們不懂設計模式,設計模式是軟體設計中常見問題的典型解決方案,它們就像能根據需求進行調整的預制藍圖, 可用于解決代碼中反複出現的設計問題,如果不懂設計模式的話,遇到這些問題就隻能抓瞎了。

這麼說吧,設計模式玩得爐火純青,寫出的代碼就更優雅,閱讀起來也會更加舒服,可維護性、可擴充性就更強。

說到這,我确信大家已經了解設計模式的重要性了!那該怎麼學好呢?

二哥來推薦一個學習網站:Refactoring Guru。

設計模式,牛逼!
網址如下所示: https://refactoring.guru

這雖然是一個國外的網站,卻神奇的實作了中文化國際化,愛了愛了,無情地愛了。據作者說,他建站的初衷就是為了幫助我們程式員,快速地掌握設計模式,但把網站做到這種用心的程度,我隻能情不自禁地點贊了!

來看一下設計模式的目錄吧(下圖中隻展現了建立型模式和結構型模式中的一部分,還有行為模式):

設計模式,牛逼!
每個模式都會對應一篇圖文并茂的文章,閱讀起來就好像在讀繪本一樣,生動有趣,令人印象深刻,學起來就沒有半點枯燥的感覺。來看一下工廠方法模式的一部分内容截圖,這圖檔的品質,确實高啊,不服不行!
設計模式,牛逼!
配套的代碼示例也非常完整,來看一下 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);
            }
        });
    }
}      

當然了,代碼示例不隻有 Java 版的,還有 C#、C++、Python、Go 等 8 種常見的程式設計語言。

這種圖文并茂 + 代碼示例的學習方式,極大地加深了我們程式員對知識的吸收。還有什麼贊美的詞語?學富五車的我竟然有點詞窮了。總之,如果大家也想學好設計模式,趕快點吧!

平台上還提供了離線版 PDF 的購買入口。如果大家需要一份免費開源的,我就隻能把我珍藏了 3 個月的《重學設計模式》貢獻出來了,截取一部分内容供大家預覽下。

裡面有不少圖文參照了 Refactoring Guru 這個網站,但也加入了作者自己的思考和了解,讀起來也更接地氣一點。按照作者說的:

很高興你能拿到這本書,如果你能堅持看完并按照書中的例⼦進行實踐,那麼在程式設計開發的世界裡,就⼜多了了⼀個可以寫出良好代碼的⼈,同時也為架構師培養儲備了了⼀個⼈才。

如果大家對這份 PDF 感興趣的話,可以點選下面的連結擷取:

連結:https://pan.baidu.com/s/1OOOfenWK3ibHpjj_65sILg 密碼:kfwl

除了這本小傅哥重寫的 Java 設計模式,我還收藏了一些其他的設計模式的電子書,放在了 GitHub 上。

CodeChina、GitHub、碼雲,我都同步了,貼心吧!

CodeChina:

https://codechina.csdn.net/mirrors/itwanger/JavaBooks

GitHub:

https://github.com/itwanger/JavaBooks

碼雲:

https://gitee.com/itwanger/JavaBooks

馬上要放假了,心有點靜不下來,但是我還是希望大家能在假期偷偷地學一波,然後驚豔其他的小夥伴,加油!最後,來個一鍵三連吧,畢竟 CSDN 我有 15 萬粉絲了,看看大家是否真心喜歡我~~~~(逃