2010-09-21 58 views
16

Có vẻ như phổ biến để đặt tên lớp là "Cơ sở" trong Ruby. Tôi không chắc tại sao, cũng như tôi cảm thấy thế nào về nó.Các lớp "Cơ sở" Ruby

Hãy xem xét, ví dụ: ActiveRecord. ActiveRecord là một mô-đun có chứa một số lớp như ObserverMigration, cũng như một lớp được gọi là Base. Lợi ích của việc này, trái ngược với việc có một lớp học ActiveRecord có chứa ObserverMigration?

class ActiveRecord 

    class Observer 
    [...] 
    end 

    class Migration 
    [...] 
    end 

end 

vs

module ActiveRecord 

    class Base 
    [...] 
    end 

    class Observer 
    [...] 
    end 

    class Migration 
    [...] 
    end 

end 

Trả lời

23

Lớp Base thường được sử dụng để xác định một lớp trừu tượng, dự định sẽ được mở rộng và thực hiện trong một lớp bê tông bởi nhà phát triển.

Ví dụ: ActiveRecord::Base là lớp trừu tượng cho bất kỳ mô hình Bản ghi hoạt động nào trong dự án Đường ray. Một mô hình trông giống như

class User < ActiveRecord::Base 
end 

Tương tự như vậy, Observer định nghĩa riêng của mình Observer::Base và hành động điều khiển xác định ActionController::Base đó, trong một dự án Rails, ngay lập tức được thực hiện bởi ApplicationController::Base.

Ruby không cung cấp và từ khóa hoặc cú pháp cấp độ ngôn ngữ để xác định các lớp trừu tượng. Về mặt kỹ thuật, ActiveRecord::Base nó không phải là một lớp trừu tượng thực sự, nhưng đó là một loại quy ước để sử dụng Base cho mẫu này.

Các vấn đề liên quan