Results (
Indonesian) 1:
[Copy]Copied!
MotivasiKetika kita merancang aplikasi perangkat lunak kami dapat mempertimbangkan tingkat rendah kelas kelas yang mengimplementasikan operasi dasar dan utama (akses disk, protokol jaringan,...) dan tingkat tinggi kelas kelas yang merangkum kompleks logika (bisnis mengalir,...). Yang terakhir bergantung pada kelas tingkat rendah. Cara alami untuk menerapkan struktur seperti akan menulis kelas tingkat rendah dan sekali kita telah mereka untuk menulis kelas tingkat tinggi yang kompleks. Sejak kelas tingkat tinggi didefinisikan dalam hal lain ini tampaknya cara yang logis untuk melakukannya. Tapi ini bukan desain yang fleksibel. Apa yang terjadi jika kita perlu mengganti kelas tingkat rendah?Mari kita ambil contoh klasik dari modul salinan yang membaca karakter dari keyboard dan menulis mereka ke perangkat printer. Kelas tinggi yang berisi logika adalah salinan kelas. Kelas-kelas tingkat rendah adalah KeyboardReader dan PrinterWriter.Dalam desain yang buruk kelas tingkat tinggi menggunakan langsung dan sangat bergantung pada kelas tingkat rendah. Dalam kasus tersebut jika kita ingin mengubah desain untuk mengarahkan output ke kelas FileWriter baru kita harus membuat perubahan di kelas salinan. (Mari kita asumsikan bahwa itu adalah kelas sangat kompleks, dengan banyak logika dan benar-benar keras untuk menguji).Untuk menghindari masalah seperti itu, kita dapat memperkenalkan lapisan yang abstak antara kelas tingkat tinggi dan rendah tingkat kelas. Karena tingkat tinggi modul berisi logika kompleks mereka seharusnya tidak bergantung pada modul tingkat rendah sehingga lapisan abstraksi baru harus tidak dibuat berdasarkan modul tingkat rendah. Rendah tingkat modul akan dibuat berdasarkan lapisan abstraksi.Menurut prinsip ini cara merancang kelas struktur adalah untuk mulai dari tingkat tinggi modul modul tingkat rendah:Kelas tingkat tinggi--> abstraksi Layer--> kelas tingkat rendahMaksud Tingkat tinggi modul tidak boleh bergantung pada tingkat rendah modul. Keduanya harus bergantung pada abstraksi. Abstraksi seharusnya tidak bergantung pada rincian. Rincian harus bergantung pada abstraksi.ContohBerikut adalah contoh yang melanggar prinsip inversi ketergantungan. Kami memiliki kelas manajer yang merupakan kelas tingkat tinggi, dan disebut tingkat rendah kelas pekerja. Kita perlu menambahkan modul baru untuk aplikasi kita untuk model perubahan dalam struktur perusahaan yang ditentukan oleh pekerjaan baru khusus pekerja. Kami menciptakan kelas baru SuperWorker untuk ini.Mari kita asumsikan kelas manajer cukup kompleks, yang berisi logika yang sangat kompleks. Dan sekarang kita harus berubah untuk memperkenalkan SuperWorker baru. Mari kita lihat kerugian: kita harus mengubah kelas manajer (ingat itu adalah kompleks dan ini akan melibatkan waktu dan usaha untuk membuat perubahan). beberapa fungsi saat ini dari kelas manajer mungkin akan terpengaruh. unit pengujian harus diulang.Semua masalah tersebut dapat mengambil banyak waktu untuk dipecahkan dan mereka mungkin mendorong baru kesalahan dalam functionlity tua. Situasi ini akan berbeda jika aplikasi telah dirancang mengikuti prinsip inversi ketergantungan. Itu berarti kita desain kelas manajer, antarmuka IWorker dan kelas pekerja yang mengimplementasikan antarmuka IWorker. Ketika kita perlu menambahkan kelas SuperWorker semua harus kita lakukan adalah menerapkan antarmuka IWorker untuk itu. Tidak ada tambahan perubahan di kelas yang ada.
Being translated, please wait..
