2012-03-01 3 views
22

프로그래밍에서 design patterns의 사용은 많은 프로그래밍 언어에서 광범위하게 확산됩니다. 많은 예가 factory 또는 singleton 디자인 패턴입니다. 이러한 패턴 중 다수는 객체 지향을 사용하여 코드에서 추상화 및 캡슐화를 생성하고 코드를 재사용 및 구조화하는 것을 목표로합니다. 이러한 디자인 패턴의 대부분은 proto 라이브러리 또는 표준 R 객체 방향을 사용하여 R에서 사용할 수도 있습니다.디자인 패턴의 사용 R

내 질문은 : (S3, S4)/패키지 (프로토, R.oo) 나 감마 등으로 책에 언급 된 예를 들어 같은 디자인 패턴을 재현하는 데 사용할 수있는

  • 무엇 기본 코드?
  • 기본 R 또는 패키지 모두에서 R로 구현 된 디자인 패턴의 예가 있습니까? 디자인 패턴의
+1

R.oo 패키지는 R에서 OOP와 비슷한 기능을 제공합니다 (S3 클래스 사용). 그것은 OOP 기능의 모든 범위를 지원하지 않으므로 OOP 기반 디자인 패턴의 전체 범위를 지원하지 않습니다. 또한 S4 클래스를 살펴볼 것입니다. http://www.stat.auckland.ac.nz/S-Workshop/Gentleman/S4Objects.pdf – SFun28

+0

S4 클래스는 유망한 것처럼 보이지만, 객체를 구성하는 방식이 예를 들어. 파이썬. –

+1

참조 클래스를 사용하여 "헤드 우선 디자인 패턴"에서 스케치 한 몇 가지 디자인 패턴을 구현했습니다. 그들은 S4 방법보다 다른 언어에서 OO 사용에 더 가깝게 매핑합니다. 예를 들어 번역이 덜 필요합니다. – jverzani

답변

2

몇 가지 예 :

  • system.time() 기능은 많이 decorator pattern처럼 행동하는 것 같다. 그러나 거의 독점적으로 데코레이터는 객체 지향 프로그래밍의 맥락에서 언급됩니다. 그러나 여전히 장식 자의 느낌을 가지고 있으며 코드 조각을 변경할 필요없이 추가 기능을 사용하여 기존 코드 (OOP의 경우 항상 객체)를 확장 (또는 꾸미기)합니다. 여기 system.time()는 작업에 나타내 on github 단일 패턴의 일 예를 등록한 @jverzani

    system.time(bla <- Sys.sleep(1000)) 
    
  • .

  • 전략 디자인 패턴의 예로는 apply 패밀리가 있습니다. 주어진 객체를 루핑하는 기능은 일반적이며, 적용되는 함수 (전략)는 사용자가 함수를 제공 할 때 선택됩니다.
관련 문제