大家好呀,想死你們了。
時不時就有讀者私信我,“二哥,我的代碼寫得很爛,該怎麼辦呀?”
寫代碼确實是門手藝活,這是我們程式員不得不承認的一個事實,畢竟要用手指頭來敲啊!不是手藝活是啥(笑)
簡單來分析一下代碼寫得爛的原因哈。其一,可能是剛入門,代碼寫得少,如果我們滿打滿算隻寫過一兩千行代碼,是不可能寫出多優雅的代碼的。其二,可能我們不懂設計模式,設計模式是軟體設計中常見問題的典型解決方案,它們就像能根據需求進行調整的預制藍圖, 可用于解決代碼中反複出現的設計問題,如果不懂設計模式的話,遇到這些問題就隻能抓瞎了。
這麼說吧,設計模式玩得爐火純青,寫出的代碼就更優雅,閱讀起來也會更加舒服,可維護性、可擴充性就更強。
說到這,我确信大家已經了解設計模式的重要性了!那該怎麼學好呢?
二哥來推薦一個學習網站:Refactoring Guru。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5COjZGZ1YjMkFDMiZDMwUmYwIWY0EWM4gTYmlzMxQ2N38CX5d2bs92Yl1iclB3bsVmdlR2LcNWaw9CXt92Yu4GZjlGbh5yYjV3Lc9CX6MHc0RHaiojIsJye.png)
這雖然是一個國外的網站,卻神奇的實作了中文化國際化,愛了愛了,無情地愛了。據作者說,他建站的初衷就是為了幫助我們程式員,快速地掌握設計模式,但把網站做到這種用心的程度,我隻能情不自禁地點贊了!
來看一下設計模式的目錄吧(下圖中隻展現了建立型模式和結構型模式中的一部分,還有行為模式):
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/JavaBooksGitHub:
https://github.com/itwanger/JavaBooks碼雲:
https://gitee.com/itwanger/JavaBooks馬上要放假了,心有點靜不下來,但是我還是希望大家能在假期偷偷地學一波,然後驚豔其他的小夥伴,加油!最後,來個一鍵三連吧,畢竟 CSDN 我有 15 萬粉絲了,看看大家是否真心喜歡我~~~~(逃