Tôi nghĩ slide 13 trong bài thuyết trình của mình ( Giá trị của các giá trị ) giúp hiểu điều này:
Giá trị
- Không cần phương pháp
- Tôi có thể gửi cho bạn các giá trị mà không cần mã
và bạn vẫn ổn
Hiểu biết của tôi là, Hickey gợi ý rằng nếu tôi cần, nói, nhân đôi giá trị bạn gửi cho tôi, tôi chỉ cần viết mã trông giống như
MyValue = Double(YourValue)
Bạn thấy, mã ở trên là như nhau, cho dù bạn đã gửi loại giá trị nào - loại tái sử dụng hoàn hảo .
Bây giờ, làm thế nào điều này sẽ trông giống như trong ngôn ngữ có các đối tượng và giao diện?
Doublable MyValue = YourValue.Double()
chờ đã Nếu YourValue
không thực hiện Doublable
thì sao? không phải là nó không thể được nhân đôi, nó hoàn toàn có thể nhưng ... nếu không có phương pháp Double
thì sao? (nếu có một phương thức gọi là nói thì TwiceAsMuch
sao?)
Uh oh chúng tôi có một vấn đề. YourValue.Double
sẽ không hoạt động, nó không thể được sử dụng lại nữa. Theo cách đọc của tôi về slide trên, đây là về ý nghĩa của Hickey khi anh ta nói, "Tất cả các giao diện đó đều giết chết việc tái sử dụng của bạn!"
Bạn thấy, các giao diện giả định rằng các đối tượng được truyền xung quanh "cùng với các phương thức của chúng", cùng với mã hoạt động trên các phương thức này. Để sử dụng các đối tượng, người ta cần hiểu cách gọi mã đó, phương thức nào để gọi.
Khi phương thức dự kiến bị thiếu, có một vấn đề, mặc dù về mặt ngữ nghĩa , hoạt động mong muốn có ý nghĩa hoàn hảo cho một đối tượng. Như đã nêu trong phần trình bày, các giá trị không cần phương thức ("Tôi có thể gửi cho bạn các giá trị mà không cần mã và bạn vẫn ổn"), cho phép viết mã xử lý chúng theo cách chung.
Lưu ý bên lề: khái niệm chuyển xung quanh các giá trị không có mã bằng cách nào đó nhắc nhở tôi về một mẫu Flykg trong OOP.
một đối tượng giảm thiểu việc sử dụng bộ nhớ bằng cách chia sẻ càng nhiều dữ liệu càng tốt với các đối tượng tương tự khác; đó là một cách để sử dụng các đối tượng với số lượng lớn khi một biểu diễn lặp lại đơn giản sẽ sử dụng một lượng bộ nhớ không thể chấp nhận được ... Các đối tượng có trọng lượng là theo các đối tượng giá trị định nghĩa . Nhận dạng của thể hiện đối tượng là không có kết quả, do đó hai trường hợp Fly trọng lượng có cùng giá trị được coi là bằng nhau ...
Các cách sử dụng Fly trọng lượng mà tôi đã thấy thường tuân theo cùng một cách tiếp cận là loại bỏ mã (phương thức, giao diện) khỏi các đối tượng và chuyển các thứ xung quanh, cũng như các giá trị không có mã , hy vọng rằng việc nhận mã có nghĩa là cần thiết để vận hành các mã này.
Điều này cảm thấy khá giống như trong slide, "các giá trị không cần phương thức. Tôi có thể gửi cho bạn các giá trị mà không cần mã và bạn vẫn ổn".