2012-03-01 33 views
22

Việc sử dụng design patterns trong lập trình được trải rộng trên nhiều ngôn ngữ lập trình. Một số ví dụ là mẫu thiết kế factory hoặc singleton. Nhiều mô hình trong số này sử dụng định hướng đối tượng để tạo trừu tượng và đóng gói trong mã, chúng nhằm mục đích làm cho mã có thể sử dụng lại và được cấu trúc. Nhiều mẫu thiết kế này cũng có thể được sử dụng trong R, có thể bằng cách sử dụng thư viện proto hoặc định hướng đối tượng R tiêu chuẩn?Việc sử dụng các mẫu thiết kế trong R

Câu hỏi của tôi là:

đang
  • cơ sở gì (S3, S4)/gói (proto, R.oo) Tôi có thể sử dụng để tái tạo các mẫu thiết kế như ví dụ được đề cập trong cuốn sách của Gamma et al?
  • Có ví dụ về các mẫu thiết kế được triển khai trong R, cả ở cơ sở R hoặc trong các gói không?
+1

Gói R.oo cung cấp chức năng giống như OOP trong R (sử dụng các lớp S3). Nó không hỗ trợ đầy đủ các tính năng OOP và như vậy sẽ không hỗ trợ phạm vi fulll của các mẫu thiết kế dựa trên OOP. Tôi cũng sẽ xem xét các lớp học của S4 http://www.stat.auckland.ac.nz/S-Workshop/Gentleman/S4Objects.pdf – SFun28

+0

Các lớp học của S4 trông đầy hứa hẹn, mặc dù cách thức xây dựng các đối tượng trông hơi phức tạp so với ví dụ. Python. –

+1

Tôi đã triển khai một vài mẫu thiết kế được phác họa trong "Mẫu thiết kế đầu tiên" bằng cách sử dụng các lớp Tham chiếu. Họ lập bản đồ chặt chẽ hơn với việc sử dụng OO bằng các ngôn ngữ khác so với phương pháp S4, do đó, liên quan đến việc dịch ít hơn. – jverzani

Trả lời

2

Một số ví dụ về các mẫu thiết kế:

  • Chức năng system.time() dường như cư xử giống như một decorator pattern. Tuy nhiên, hầu hết các trang trí được đề cập trong bối cảnh lập trình hướng đối tượng. Nhưng vẫn còn, nó có cảm giác của một trang trí, nó mở rộng (hoặc trang trí) một đoạn mã hiện có (trong OOP luôn là một đối tượng) với chức năng bổ sung mà không cần phải thay đổi đoạn mã. Dưới đây system.time() được thể hiện trong hành động:

    system.time(bla <- Sys.sleep(1000)) 
    
  • @jverzani đăng một ví dụ về mô hình singleton on github.

  • Ví dụ về Mẫu thiết kế chiến lược là apply họat động chức năng. Chức năng lặp qua đối tượng đã cho là chung chung, hàm được áp dụng (chiến lược) được chọn khi người dùng cung cấp chức năng.
Các vấn đề liên quan