Đây là vấn đề mà tôi gọi là sự nhầm lẫn "đối tượng / chủ đề" và nó khá phổ biến.
Các câu nói chung có một chủ ngữ thực hiện động từ trên đối tượng đích của chúng .
Bây giờ liên quan đến lập trình, điều duy nhất thực sự làm mọi thứ là máy tính. Hoặc hầu như một quá trình, chủ đề hoặc một sợi. Các đối tượng không được animate theo mặc định. Họ không có chủ đề riêng của họ đang chạy để họ thực sự không thể làm gì.
Điều này có nghĩa là các phương thức hoạt động trên chúng, chúng là mục tiêu của hành động chứ không phải ai thực hiện hành động đó. Đó là lý do tại sao chúng tôi gọi chúng là "đối tượng" chứ không phải "đối tượng"!
Khi bạn nói File.close
đó không phải là tệp tự đóng, thì luồng đang chạy sẽ đóng tệp. Nếu bạn nói Array.sort
, luồng đang chạy sắp xếp mảng. Nếu bạn nói HttpServer.sendRequest
, luồng đang chạy hiện tại sẽ gửi yêu cầu đến máy chủ (không phải ngược lại!). Nói tương tự PunchingBag.punch
có nghĩa là các chủ đề chạy hiện tại đấm túi.
Điều này có nghĩa là nếu bạn muốn Boxer
có khả năng đấm, thì nó phải là một lớp con của Thread
nó để nó có thể làm những việc như đấm túi trong chức năng luồng của nó.
Tuy nhiên, đôi khi cũng có ý nghĩa khi nói đấm túi tự đấm trong trường hợp mỗi đối tượng có luồng riêng, bạn có thể muốn tránh điều kiện cuộc đua và thực hiện các cuộc gọi phương thức khi gửi tin nhắn: bạn đấm túi bằng cách gửi punch
tin nhắn, đó là cú đấm sau đó chính nó sẽ gửi lại cho bạn punch successful
tin nhắn, nhưng đó chỉ là một chi tiết thực hiện.