2012-03-01 60 views
22

在編程中使用design patterns廣泛應用於許多編程語言。許多示例是factorysingleton設計模式。其中許多模式使用面向對象來創建代碼中的抽象和封裝,它們旨在使代碼重用和結構化。許多這些設計模式也可以用在R中,也許通過使用proto庫或標準R對象方向?R中的設計模式的使用

我的問題是:

  • 什麼基礎代碼(S3,S4)/包(原,R.oo)我可以用它來複制設計模式,例如Gamma等人在書中提到?
  • 是否有在R中實現的設計模式的實例,無論是在基礎R還是包​​中?
+1

R.oo包在R中提供類OOP功能(使用S3類)。它不支持全面的OOP功能,因此不支持全面的基於OOP的設計模式。我也會看S4課程http://www.stat.auckland.ac.nz/S-Workshop/Gentleman/S4Objects.pdf – SFun28 2012-03-01 16:25:27

+0

S4課程看起來很有希望,儘管構建對象的方式看起來有點笨重。蟒蛇。 – 2012-03-01 17:01:25

+1

我已經實現了一些使用引用類在「Head First Design Patterns」中繪製的設計模式。比起S4方法,它們更貼近OO在其他語言中的使用,因此減少了翻譯。 – jverzani 2012-03-01 17:04:31

回答

2

的設計模式的一些例子:

  • system.time()功能似乎表現得就像一個decorator pattern。但是,在面向對象編程的背景下,幾乎只提到裝飾器。但是,它仍然具有裝飾器的感覺,它可以擴展(或裝飾)現有的代碼片段(在OOP中始終是一個對象),而無需更改代碼片段。這裏system.time()示於動作:

    system.time(bla <- Sys.sleep(1000)) 
    
  • @jverzani張貼單例模式on github的一個例子。

  • 戰略設計模式的一個例子是apply功能家族。循環給定對象的功能是通用的,應用功能(策略)是在用戶提供功能時選擇的。