Tôi hiện đang làm việc thông qua sách Gregory Brown Ruby Best Practices. Ban đầu, anh ta đang nói về việc tái cấu trúc một số chức năng từ các phương thức trợ giúp trên một lớp liên quan, đến một số phương thức trên mô đun, sau đó có mô-đun extend self
.Khi nào cần sử dụng một mô-đun và khi nào nên sử dụng một lớp học
Chưa từng thấy trước đó, sau một google nhanh chóng, phát hiện ra rằng extend self
trên mô-đun cho phép các phương thức được xác định trên mô-đun nhìn thấy nhau, điều này có ý nghĩa.
Bây giờ, câu hỏi của tôi là khi bạn sẽ làm điều gì đó như thế này
module StyleParser
extend self
def process(text)
...
end
def style_tag?(text)
...
end
end
và sau đó đề cập đến nó trong các thử nghiệm với
@parser = Prawn::Document::Text::StyleParser
như trái ngược với một cái gì đó như thế này?
class StyleParser
def self.process(text)
...
end
def self.style_tag?(text)
...
end
end
là nó để bạn có thể sử dụng làm mixin? hoặc có lý do nào khác mà tôi không thấy?
Chính xác những gì tôi đang tìm kiếm :-) –