我只是進入設計模式,我正在閱讀的是模式是通常獨立的語言。設計模式和語言適合性
在編程中,我們有OOP和非OOP(是否有非OOP的名稱?)。
我最近一直在玩template pattern,它似乎與面向對象的反直覺。事實上,這只是一堆「走向方法」(讓我想起帕斯卡爾的學位),似乎有些如何「反對」OOP如何表現。
這是否意味着某些模式更適合語言(並且我認識到有些東西不太適合並不意味着它不適合)。
我只是進入設計模式,我正在閱讀的是模式是通常獨立的語言。設計模式和語言適合性
在編程中,我們有OOP和非OOP(是否有非OOP的名稱?)。
我最近一直在玩template pattern,它似乎與面向對象的反直覺。事實上,這只是一堆「走向方法」(讓我想起帕斯卡爾的學位),似乎有些如何「反對」OOP如何表現。
這是否意味着某些模式更適合語言(並且我認識到有些東西不太適合並不意味着它不適合)。
模板模式實際上是一個非常好的OOP示例,因爲您可以通過抽象類型引用一組相關對象,並以類似的方式對它們進行操作,因爲它們每個都實現相同的「合同」的方法。據說這種模式定義了算法/程序結構,但在大多數基本情況下,它實際上只是polymorphism。
您可能會認爲某些模式更適合其他語言,但幾乎可以使用任何語言的任何模式。
模式與語言無關,但通常針對語言系列。有OO語言通用的模式,一些是功能語言通用的模式等。
讓我們以一個訪問者模式爲例:它在OO語言的一個子集中很受歡迎,它不支持多個分派(C++,Java ,C# - 短缺dynamic
s)。但是,在多語言功能是語言功能(Common Lisp,Clojure)的語言中,這是完全沒有必要的。
關於OOP與非OOP,有多種非OOP範例:函數式語言,過程式語言等。許多實際上是多種語言,例如, C++ - 它提供面向對象,程序和函數式語言的功能。另一方面,很多人不認爲它是一個真正的OO語言,因爲類型不是C++中的一流對象,它們可能是正確的。
是的,我沒有考慮多態性。 – Dave