Thành phần đề cập đến việc kết hợp các loại đơn giản để tạo các loại phức tạp hơn. Trong ví dụ của bạn, thành phần có thể là:
Animal:
Skin animalSkin
Organs animalOrgans
Mammal::Animal:
Hair/fur mammalFur
warm-blooded-based_cirulation_system heartAndStuff
Person::Mammal:
string firstName
string lastName
Nếu bạn muốn đi hoàn toàn phần (và thoát khỏi tất cả thừa kế) nó sẽ trông như thế này:
Animal:
Skin animalSkin
Organs animalOrgans
Mammal:
private Animal _animalRef
Hair/fur mammalFur
warm-blooded-based_cirulation_system heartAndStuff
Person:
private Mammal _mammalRef
string firstName
string lastName
Ưu điểm của phương pháp này là các loại Mammal
và Person
không phải tuân thủ giao diện của cha mẹ trước đó của chúng. Điều này có thể là một điều tốt bởi vì đôi khi một sự thay đổi để siêu lớp có thể có tác động nghiêm trọng trên các lớp con. Họ vẫn có thể truy cập vào các đặc tính và hành vi của các lớp này thông qua các cá thể riêng của chúng trong các lớp này, và nếu chúng muốn phơi bày các hành vi cũ, chúng có thể đơn giản quấn chúng theo một phương thức công khai.
Tôi tìm thấy một liên kết tốt với các ví dụ tốt ở đây: http://www.artima.com/designtechniques/compoinh.html
Vì vậy, tôi có thể nói rằng: "Thành phần là khi tôi tạo một đối tượng' Lớp A' bên trong 'Lớp B' (thay vì phân lớp' Lớp B' từ 'Lớp A')." ? – thesummersign
oh. ok đã nhận nó 'w69rdy' trả lời sau. CÓ Tôi có thể nói điều đó. – thesummersign