回覆列表
  • 1 # 一隻懶懶的coder
    為什麼需要學設計模式設計模式(Design Pattern)是一套被反覆使用、多數人知曉的、經過分類的、程式碼設計經驗的總結。使用設計模式的目的:為了程式碼可重用性、讓程式碼更容易被他人理解、保證程式碼可靠性。 設計模式使程式碼編寫真正工程化;設計模式是軟體工程的基石脈絡,如同大廈的結構一樣。

    設計模式是前人從不斷實踐中總結出來的一套經驗,與語言無關,而是從程式碼設計的角度上入手,目的是為了使我們的程式碼更具有可維護性、可讀性、可擴充套件性。

    咱們從Java本身語言來說,很多類的設計就充分利用了23種設計模式,這裡附上我整理的一張圖:

    再就從上文說到的成績管理系統來說,其總共包括以下幾個實體:

    1、班級:一個老師可以管理多個班級,一個學生只能有一個班級

    2、老師:負責將每個學生相應學科的成績錄入到系統中

    3、學生:檢視自己不同學科的成績

    4、學科:一個班級有多個學科,一個學科有一個老師

    那麼這裡構造一個班級物件,其就充分利用了好幾種設計模式:

    組合模式:兩個屬性teachers和students,透過兩個add方法來新增Teacher和Student

    迭代器模式:透過showStudents方法來獲取檢視班級下所有學生的迭代器(ps:這裡複用了Java#List的迭代器)

    建造者模式:StudyClass本身是個建造者模式的實體,透過新增Teacher和Student來形成一個班級

    public class StudyClass { private final Map<Subject , Teacher> teachers; private final List<Student> students; public void addTeacher(Subject subject , Teacher teacher){teachers.put(subject,teacher);} public void addStudent(Student s){students.add(s);} public Iterator showStudents(){}}

    所以上面的這個例子,你有發現什麼嗎?其實我們在日常開發中,在不斷的應用著設計模式,早日學設計模式,能讓我們做到了解到他人寫這個程式碼的設計理念,能知道背後的邏輯,而不是停留在應用的階段。

    另外,同樣是寫程式碼,有的人寫的程式碼可讀性、可維護性極差,我們經常會看到有人在網上爆料說XX同事寫的程式碼怎麼怎麼爛;有的人寫的程式碼會讓你如浴春風,賞心悅目。

    對於Java語言來說,其是一門面向物件設計的語言,而設計模式本身也是基於面向物件設計產生的,這也更具有貼合性。

    再一個,如果你想成為開源專案的commiter,那麼對於程式碼質量這塊要求就更高了,而設計模式就像一把利劍能幫你斬殺一些爛程式碼。

    總之,更早的接觸設計模式,瞭解其背後的設計理念,會讓你的程式碼質量質的增長。

  • 中秋節和大豐收的關聯?
  • 《紅樓夢》中的外國名是不是閒筆?為什麼?