設計模式的第一課內容主要是介紹了什麼是設計模式
Gof23種設計模式:歷史性著作《設計模式:可復用面向對象軟件的基礎》一書中描述了23種經典面向對象設計模式,創立了模式在軟件設計中的地位。該書四位作者被人們並稱為Gang of Four (GoF),"四人組",該書描述的23種經典設計模式又被人們稱為Gof23 種設計模式。
Gof23種設計模式並不意味著它表示了所有的面向對象的設計模式。面向對象的設計模式也並不意味著代表所有的設計模式。Gof23種設計模式只是設計模式的基礎。
面向對象的設計模式主要解決的是"類與相互通信的對象之間的組織關系,包括它們的角色、職責、協作方式幾個方面。面向對象設計模式的目的是應對變化,提高復用。面向對象的設計模式是與語言無關的。它可以通過各種面向對象的語言來實現如C++、C#、Java等。
我們在編程當中,都了解面向對象的語言的三大特性:封裝、繼承、多態。但是,僅僅通過面向對象的語言是不能夠完全了解面向對象的設計的。面向對象語言的三大特性是為了實現面向對象而存在的,可以說面向對象是一篇文章,而三大特性是文章的寫作技巧,這些寫作技巧是為了寫這篇文章而服務的。
那麼這裡有一個小示例,可以初步的了解面向對象設計。
這裡有一個Employee的抽象類,兩個繼承於Employee的派生類。GetSalary是一個抽象方法,這個方法的調用由派生類的類型決定。
我們現在還有一個工廠類
我們可以在程序種直接可以調用這個工廠類,來得到一個Employee
如果這時候,我們的Employee類型增加了一個Worker。那麼我們只需要新增一個Worker類,並僅僅需要修改GetEmployee的內部實現,其他的我們可以不作任何修改。Engineer和Sales類也可以不用修改。那麼就達到了一個松耦合的目的。這裡我們GetEmployee的參數可以是別的類型,比如說枚舉,或整形等。
那麼我們從宏觀的層面看就是面向對象的構建方式更能適應軟件的變化,能將變化所帶來的影響減為最小。
從微觀的層面來看面向對象的方式更強調各個類的"責任",新增員工類型不會影響原來員工類型的實現代碼。實際上就是對原有代碼的擴展。
對象是什麼?
面向對象的設計原則: