Code Monkey home page Code Monkey logo

designpattern's Introduction

鐵人賽中文章的source code

前言


我目前是android工程師 中途轉職開發軟體有一年左右的時間 雖然工作了也不算短的時間 不過很多時候是找google複製貼上別人的code 或是找現有的庫來滿足需求 看到在github上各種專案 很羨慕大家能夠互相交流 希望未來有一天能夠在上面也貢獻自己的程式碼

但是這有一些前提的知識點需要了解...

例如:

  1. Version Control System
    • git
    • git flow
    • github flow
  2. Software Architecture
    • clean code
    • clean architecture
    • design pattern

如果不了解上面各個知識點,在與別人合作的過程中一定困難重重... 除了這些根據你想貢獻的issue和專案還有更多的需要突破的難關 但是上面提到的兩點需要熟悉運用,才有基礎可以貢獻自己的程式碼!

希望在經過這30天的挑戰後能距離大神們更近一點

接下來規劃每天介紹一種設計模式 還有一些天數可以做一些補充又或許是更深入的解析

嘗試30天進入軟體設計之窗

什麼是設計模式

軟體工程中,設計模式(design pattern)是對軟體設計中普遍存在(反覆出現)的各種問題,所提出的解決方案。這個術語是由埃里希·伽瑪(Erich Gamma)等人在1990年代從建築設計領域引入到電腦科學的。

設計模式並不直接用來完成程式碼的編寫,而是描述在各種不同情況下,要怎麼解決問題的一種方案。物件導向設計模式通常以類別物件來描述其中的關係和相互作用,但不涉及用來完成應用程式的特定類別或物件。設計模式能使不穩定依賴於相對穩定、具體依賴於相對抽象,避免會引起麻煩的緊耦合,以增強軟體設計面對並適應變化的能力。

並非所有的軟體模式都是設計模式,設計模式特指軟體「設計」層次上的問題。還有其他非設計模式的模式,如架構模式。同時,演算法不能算是一種設計模式,因為演算法主要是用來解決計算上的問題,而非設計上的問題。

-- by wikipedia 設計模式 (電腦)

上面這段文章摘錄是wikipedia對於設計模式的說明。

接下來的30天會針對設計模式做各個pattern的介紹和實作,分享自己有關於設計模式的理解,並且期望在熟悉之後對於整個軟體設計的過程,和程式碼的邏輯有一個通盤性的了解,期望未來在接觸到相似的軟體架構或是程式碼時,可以快速的理解別人編寫程式碼的概念。

除了閱讀別人的程式碼、函式庫外,期望未來在軟體設計上,有一個可以依據的程式架構概念,讓自己所撰寫的程式碼容易閱讀,並且可以簡單的修改擴充,另外對於軟體架構上有更近一步的理解,而一步一步的提升自己抽象化程式碼的能力,也就是提升自己對於程式設計、系統設計、架構設計的觀念,和程式思維的訓練。

文章摘錄

其中各個模式的實作會以Java來實現。

設計模式一共分為下面三種:

建立型模式

結構型模式

行為型模式

雜談

另外這30天內沒辦法被分類的文章

designpattern's People

Contributors

orcarex avatar

Watchers

James Cloos avatar

Forkers

markhuang19994

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.