Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Nota
Konten ini dicetak ulang oleh izin Pearson Education, Inc. dari Panduan Desain Kerangka Kerja: Konvensi, Idiom, dan Pola untuk Pustaka .NET yang Dapat Digunakan Kembali, Edisi ke-2. Edisi itu diterbitkan pada tahun 2008, dan buku tersebut telah sepenuhnya direvisi pada edisi ketiga. Beberapa informasi di halaman ini mungkin sudah kedaluarsa.
Abstraksi adalah jenis yang menjelaskan kontrak tetapi tidak memberikan implementasi penuh kontrak. Abstraksi biasanya diimplementasikan sebagai kelas atau antarmuka abstrak, dan dilengkapi dengan serangkaian dokumentasi referensi yang terdefinisi dengan baik yang menjelaskan semantik yang diperlukan dari jenis yang mengimplementasikan kontrak. Beberapa abstraksi terpenting dalam .NET Framework meliputi Stream, , IEnumerable<T>dan Object.
Anda dapat memperluas kerangka kerja dengan menerapkan tipe konkret yang mendukung kontrak abstraksi dan menggunakan tipe konkret ini dengan API kerangka kerja yang menggunakan (beroperasi pada) abstraksi.
Abstraksi yang bermakna dan berguna yang mampu menahan uji waktu sangat sulit untuk didesain. Kesulitan utama adalah mendapatkan set anggota yang tepat, tidak lebih dan tidak lebih sedikit. Jika abstraksi memiliki terlalu banyak anggota, menjadi sulit atau bahkan tidak mungkin untuk diterapkan. Jika memiliki terlalu sedikit anggota untuk fungsionalitas yang dijanjikan, itu menjadi tidak berguna dalam banyak skenario menarik.
Terlalu banyak abstraksi dalam kerangka kerja juga berdampak negatif pada kegunaan kerangka kerja. Seringkali cukup sulit untuk memahami abstraksi tanpa memahami bagaimana itu cocok dengan gambaran yang lebih besar dari implementasi konkret dan API yang beroperasi pada abstraksi. Selain itu, nama abstraksi dan anggota mereka tentu abstrak, yang sering membuat mereka kriptik dan tidak dapat dijangkau tanpa terlebih dahulu memahami konteks penggunaannya yang lebih luas.
Namun, abstraksi memberikan ekstensibilitas yang sangat kuat, yang seringkali tidak dapat ditandingi oleh mekanisme ekstensibilitas lainnya. Mereka berada pada inti dari banyak pola arsitektur, seperti plug-in, inversi kontrol (IoC), pipeline, dan sebagainya. Mereka juga sangat penting untuk keterujian kerangka kerja. Abstraksi yang baik memungkinkan untuk menggantikan sementara dependensi yang berat untuk keperluan pengujian unit. Singkatnya, abstraksi bertanggung jawab atas kekayaan yang dicari dari kerangka kerja berorientasi objek modern.
❌ JANGAN memberikan abstraksi kecuali diuji dengan mengembangkan beberapa implementasi konkret dan API yang mengkonsumsi abstraksi.
✔️ Pastikan memilih dengan hati-hati antara kelas abstrak dan antarmuka saat merancang abstraksi.
✔️ PERTIMBANGKAN untuk menyediakan pengujian referensi untuk implementasi abstraksi yang konkret. Pengujian tersebut harus memungkinkan pengguna untuk menguji apakah implementasi mereka menerapkan kontrak dengan benar.
© Sebagian 2005, 2009 Microsoft Corporation. Seluruh hak cipta dilindungi.
Dicetak ulang oleh izin Pearson Education, Inc. dari Panduan Desain Kerangka Kerja: Konvensi, Idiom, dan Pola untuk Pustaka .NET yang Dapat Digunakan Kembali, Edisi ke-2 oleh Krzysztof Cwalina dan Brad Abrams, diterbitkan 22 Okt 2008 oleh Addison-Wesley Professional sebagai bagian dari Seri Pengembangan Microsoft Windows.