Pesawat kami adalah pertengahan antara mobil dan helikopter
Konsep inheritance adalah konsep yang satu harus menguasai ketika seseorang menggunakan bahasa objectJika anda ingin mengatur kode anda di sekitar benda-benda, ada kemungkinan kuat bahwa anda akan dihadapkan dengan kebutuhan untuk menggunakan warisan. Meskipun warisan membawa banyak keuntungan tak terbantahkan, ini bukan jawaban untuk semua masalah.
Jika anda jatuh ke dalam penggunaan sembarangan warisan, ada kemungkinan tinggi bahwa anda mordiez jari beberapa bulan kemudian ketika anda perlu untuk berkembang fungsional lingkup dari aplikasi anda.
Tentu saja hal ini menggoda untuk mengatakan,"Jika saya mewarisi dari Foo, maka saya akan memiliki semua fitur-fiturnya tanpa usaha apapun.".
Tetapi pada saat yang sama, anda akan mengikat sangat baik dari kelas anda dan jika mereka datang untuk menyimpang di masa depan, anda tidak akan dapat untuk bahwa anda hanya mengatakan"Ok, mereka berbagi sama ketika beberapa fitur".
Anda kemudian akan mulai menyadari bahwa sekarang sulit untuk menguji masing-masing dari kelas-kelas ini, dan bahwa itu adalah jauh dari jelas ke split. Perhatian bagi para pengembang tidak berpengalaman adalah bahwa seseorang tidak menyadari fakta ini, bahwa di tengah-tengah sebuah proyek atau ketika klien ingin membuat perubahan untuk operasi dari elemen yang ada. Anda bisa percaya pada kata-kata, selalu berakhir dengan mendapatkan. Hal ini diperlukan untuk dapat mendeteksi berbagai jenis hubungan yang ada di antara kelas-kelas. Kelas A dapat dihubungkan satu sama lain dengan tiga jenis hubungan: komposisi akan selalu menjadi lebih fleksibel daripada mixin dan tidak akan berhubungan langsung dengan kelas yang host berbeda dengan warisan. Oleh karena itu, sekarang kendaraan yang memiliki kecepatan, mobil ini dapat menggulung dan helikopter dapat terbang.
Sekarang mari kita mengatakan bahwa salah satu keinginan untuk membuat sebuah kelas untuk pesawat secara teknis dapat menggulung dan terbang.
Bagaimana untuk melakukannya. Tentu saja, kita bisa menggunakan mixin, tapi ini tidak lebih dan tidak kurang dari suatu bentuk multiple inheritance. Itu akan jauh lebih baik dari solusi kami saat ini dan akan memecahkan masalah kita. Solusi lain adalah dengan menggunakan komposisi, yang memungkinkan anda untuk mengisolasi perilaku di kelas khusus. Kita akan menggunakan contoh dari kelas ini di kelas-kelas lain. Oleh karena itu memungkinkan untuk memiliki kelas yang bersih, singkat, tanpa metode yang berlebihan, dan sangat mudah diuji. Gunakan komposisi, itu adalah untuk memiliki akses ke penuh kuasa khusus class untuk memanipulasi objek. Jadi kita bisa meletakkannya di tempat: aku memberikan anda bahwa solusi ini lebih rinci daripada mixin tetapi juga jauh lebih fleksibel dan kuat, dan akan dalam praktek mungkin paling mudah untuk menguji. Untuk demonstrasi, saya diinisialisasi benda-benda Roda dan Sayap terbang, tetapi dalam praktek hal ini cenderung untuk melakukan pekerjaan ini dari inisialisasi inisialisasi metode yang akan memungkinkan untuk memiliki terus-menerus benda-benda dan untuk menghindari masalah-masalah kompetisi. Dalam prakteknya, tidak ada alasan untuk mengikuti metode yang tepat, mengapa menggunakan komposisi, mixin, atau warisan secara eksklusif ketika anda dapat mencampur tiga.
Dia harus tahu bagaimana untuk beradaptasi dan menggunakan solusi yang akan lebih fleksibel.
Oleh karena itu kami akan menggunakan warisan ketika dibutuhkan, ingat,"seorang pengembang adalah orang". Kita akan melanjutkan ke mixin ketika seseorang dalam situasi tersebut,"pengembang bertindak sebagai karyawan".
Itu mungkin akan menjadi komposisi jika hubungan ini ternyata menjadi sesuatu yang kompleks, suatu objek yang membutuhkan dedicated kelas.
Untuk meringkas isi dari artikel ini, pikir dari kelas anda sehingga mereka yang paling modular mungkin, jangan menempel sendiri di kotak yang anda mungkin tidak akhirnya pergi keluar, ingat dengan jelas menggambarkan tanggung jawab masing-masing. Jika anda tes yang sulit untuk diterapkan, hal ini sering menjadi tanda dari masalah arsitektur yang harus anda menempatkan kutu di telinga. Hari ini, kita akan berbicara tentang arsitektur perangkat lunak. di Tampilan aplikasi. Sisi, hal ini mungkin. Tidak tinggal sendirian.