Prinsip Tertutup Terbuka adalah prinsip desain paling mendasar di dunia Java. Ini membimbing kita bagaimana membangun sistem yang stabil dan fleksibel.
definisi:
Entitas perangkat lunak seperti kelas, modul, dan fungsi harus terbuka untuk ekstensi dan tertutup untuk modifikasi.
Entitas perangkat lunak seperti kelas, modul dan fungsi harus terbuka untuk ekstensi tetapi ditutup untuk modifikasi.
Arti dari prinsip pembukaan dan penutupan adalah bahwa entitas perangkat lunak harus mencapai perubahan melalui ekstensi, bukan dengan memodifikasi kode yang ada.
Entitas perangkat lunak mencakup bagian -bagian berikut:
Prinsip pembukaan dan penutupan adalah prinsip untuk kendala pada desain pengembangan saat ini yang diformulasikan untuk hal -hal di masa depan dari entitas perangkat lunak.
Catatan: Prinsip pembukaan dan penutupan terbuka untuk ekstensi dan modifikasi penutupan tidak berarti bahwa tidak ada modifikasi yang dilakukan. Perubahan pada modul tingkat rendah harus digabungkan dengan modul tingkat tinggi, jika tidak itu akan menjadi cuplikan kode yang terisolasi dan tidak berarti.
Jenis Perubahan:
Jalur dasar suatu proyek harus sebagai berikut: Pengembangan Proyek, Rekonstruksi, Pengujian, Produksi, Operasi dan Pemeliharaan. Rekonstruksi dapat memodifikasi desain dan kode asli, dan operasi dan pemeliharaan dapat meminimalkan modifikasi kode asli, mempertahankan kemurnian kode historis, dan meningkatkan stabilitas sistem.
Pentingnya prinsip pembukaan dan penutupan:
1. Dampak dari prinsip pembukaan dan penutupan pada tes. Prinsip pembukaan dan penutupan adalah menjaga kode uji asli masih berjalan secara normal. Kami hanya perlu menguji kode yang diperluas.
2. Prinsip pembukaan dan penutupan dapat meningkatkan reusability. Dalam desain yang berorientasi objek, semua logika terdiri dari logika atom, daripada menerapkan logika bisnis secara mandiri di kelas. Hanya dengan cara ini kode dapat digunakan kembali. Semakin kecil granularitas, semakin besar kemungkinan digunakan kembali.
3. Prinsip pembukaan dan penutupan dapat meningkatkan persyaratan pengembangan yang berorientasi objek pemeliharaan.
Cara menggunakan prinsip pembukaan dan penutupan:
1. Kendala abstrak terlebih dahulu, memperluas ekstensi melalui antarmuka atau kendala kelas abstrak, dan tidak mengizinkan metode publik yang tidak ada di kelas antarmuka atau abstrak;
Kedua, coba gunakan antarmuka atau kelas abstrak untuk jenis parameter dan objek referensi, bukan kelas implementasi;
Ketiga, cobalah untuk tetap stabil sebanyak mungkin, dan setelah ditentukan, modifikasi tidak diizinkan.
2. Metadata Kontrol Modul Perilaku Metadata adalah data yang digunakan untuk menggambarkan lingkungan dan data. Dalam istilah Layman, itu adalah parameter konfigurasi. Parameter dapat diperoleh dari file atau dari database.
Kontainer musim semi adalah contoh khas dari perilaku modul kontrol metadata, dan yang paling penting adalah inversi kontrol
3. Merumuskan Piagam Proyek. Dalam sebuah tim, sangat penting untuk membangun piagam proyek karena piagam tersebut menentukan perjanjian yang harus dipatuhi oleh semua personel. Untuk proyek, perjanjian lebih baik daripada konfigurasi.
4. Perubahan kemasan memiliki dua makna:
Pertama, merangkum perubahan yang sama menjadi antarmuka atau kelas abstrak;
Kedua, merangkum perubahan yang berbeda menjadi antarmuka atau kelas abstrak yang berbeda, dan tidak boleh ada dua perubahan berbeda dalam antarmuka atau kelas abstrak yang sama.
contoh
Berikut adalah contoh, pertama -tama, contoh yang buruk:
kelas grafiseditor {public void drawshape (bentuk s) {if (s.m_type == 1) drawrectangle (s); lain jika (s.m_type == 2) drawcircle (s); } public void drawcircle (lingkaran r) {....} public void drawrectangle (persegi panjang r) {....}} class Shape {int m_type; } class rectangle memperluas bentuk {rectangle () {super.m_type = 1; }} class Circle memperluas bentuk {circle () {super.m_type = 2; }}Ketika kita ingin memperluas bentuk, kita perlu memahami kelas grafis terlebih dahulu, lalu tambahkan tipe baru di drawshape, dan kemudian tambahkan fungsi. Ini kode yang ditingkatkan:
kelas grafiseditor {public void drawshape (bentuk s) {s.draw (); }} class Shape {abstrak void draw (); } class rectangle memperluas bentuk {public void draw () {// gambar persegi panjang}}
Tidak perlu memahami logika gambar, masukkan implementasi spesifik ke dalam subclass.
Meringkaskan:
1. Mematuhi prinsip pembukaan dan penutupan dapat meningkatkan skalabilitas dan pemeliharaan perangkat lunak.
2. Sebagian besar pola desain dan prinsip desain adalah tentang mewujudkan prinsip pembukaan dan penutupan.