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

大家好呀,想死你們了。
時(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í)的熱情!
