Faceted Builder
Tutorial video gratis dari Dmitri Nesteruk
Software/Hardware Engineering • Quant Finance • Algotrading
22 kursus
342.042 peserta
Deskripsi pelajaran
We look at a more complicated builder facade that exposes several sub-builders (builder facets) for building up parts of an object in a fluent manner.
Pelajari selengkapnya dari kursus lengkap
Design Patterns in C# and .NET
Discover the modern implementation of design patterns with C# and .NET
Video atas permintaan 20:40:51 • Diperbarui Agustus 2025
Recognize and apply design patterns
Refactor existing designs to use design patterns
Reason about applicability and usability of design patterns
Indonesia [Auto]
Jadi, dalam contoh yang telah kami lakukan sejauh ini kami hanya menggunakan satu pembangun untuk membangun objek tertentu dan kami melihat cara menerapkan pembangun ini dan bahkan membuatnya terbang. Namun terkadang satu pembangun saja tidak cukup. Dan yang Anda inginkan adalah Anda ingin beberapa pembangun yang bertanggung jawab untuk membangun beberapa aspek berbeda dari objek tertentu dan Anda juga ingin semacam fasad dan fasad adalah pola desain lain yang akan kita lihat nanti. Tetapi kita akan menemukannya dalam demonstrasi ini. Jadi izinkan saya menjelaskan kepada Anda mengapa ini diperlukan. Sekarang saya akan menggunakan sedikit contoh sintetis tetapi contoh ini cukup sederhana untuk dipahami jadi mari kita anggap Anda memiliki seseorang sekarang seseorang memiliki dua kelas informasi yang berbeda ada informasi mengenai alamat seseorang. Jadi saya mungkin membuat beberapa bidang publik sekali lagi jadi saya akan membuat alamat jalan umum dan kode pos dan biarkan City. Jadi ini adalah informasi yang berkaitan dengan alamat. Dan Anda mungkin ingin memiliki pembangun hanya untuk membangun alamat dengan cara yang lancar. Dan tentu saja kita akan memiliki beberapa informasi ketenagakerjaan juga. Jadi kita akan memiliki nama dan posisi perusahaan string publik dan saya akan menambahkan pendapatan publik lapangan dan tahunan lainnya misalnya. Jadi ini sedikit informasi tentang orang tersebut. Dan kami ingin pertama-tama kami ingin menampilkan informasi ini jadi saya akan menambahkan anggota pemformatan. Saya hanya akan membuang semuanya di sini. Jadi kami memiliki implementasi dua string yang bagus sehingga kami dapat melihat bagaimana orang tersebut diinisialisasi. Sekarang yang ingin saya miliki adalah semacam Builder yang benar-benar membangun seseorang tetapi sebenarnya saya ingin beberapa bangunan mengurus prosesnya. Saya ingin API yang bagus untuk membangun alamat untuk membangun informasi pekerjaan dan untuk melompat dari membangun satu ke membangun yang lain. Dan untuk ini kita membuat facet builder atau bahkan kita harus membangun facet facet untuk pakaian dan facet untuk pekerjaan. Jadi mari kita lihat bagaimana mengimplementasikan ini sekarang kita akan mulai yang mungkin tampak seperti pendekatan biasa dengan person builder tetapi person builder tidak benar-benar pembangun dalam arti kata yang lengkap. Itu sebuah fasad. Harus punya Sadullah di sini tapi tidak apa-apa. Jadi pembangun orang adalah fasad untuk pembangun lain sehingga tidak benar-benar membangun orang dengan sendirinya tetapi membuat referensi ke orang yang sedang dibangun itu satu hal. Dan yang kedua adalah memungkinkan Anda mengakses sub-pembangun itu jika Anda mau. Jadi begini tampilannya. Kami memiliki orang yang dilindungi, ia memanggil orang baru. Sekarang saya harus menekankan bahwa ini adalah referensi itu adalah objek referensi ini sangat penting karena jika Anda membangun sebuah struct Anda akan memiliki banyak masalah dengan pendekatan ini. Mereka dapat diredakan tetapi saya hanya menaruhnya di luar sana sehingga Anda menyadarinya. Jadi kami memiliki referensi ke objek yang sedang dibangun dalam hal ini adalah seseorang dan diinisialisasi di sini. Sekarang selain apa yang kita lakukan adalah kita mengekspos gedung tetapi pembangun apa yang belum kita tangkap, jadi mari kita buat orang itu pembangun pekerjaan. Jadi buatlah pekerjaan seseorang. Jadi pembangun pekerjaan seseorang dirancang untuk membangun informasi pekerjaan pada objek seseorang. Tetapi selain menjadi mandiri itu juga mewarisi dari orang pembangun. Sekarang ini benar-benar aneh. Mengapa kita mewarisinya? Anda akan melihat mengapa suatu saat semuanya menjadi jelas dalam beberapa saat. Tetapi untuk sekarang mari kita fokus pada objek ini sehingga kita perlu sebagai argumen konstruk untuk mengambil referensi ke orang yang sedang kita bangun. Jadi saya akan mengambil referensi di sini. Sebenarnya mari kita masuk ke jenderal dan Anda membuat konstruktor tetapi saya akan mengambil seseorang orang saya akan menugaskan orang ini dia memanggil orang seperti jadi sekarang apa yang terjadi di sini adalah bahwa Anda melewati pembangun Objek yang Anda bangun dan Anda menyimpannya di bidang yang Anda warisi dari pembuat orang. Sejauh ini baik. Dan sekarang saya dapat membuat API lancar yang bagus dan bagus itu jadi jika saya ingin mengatakan bahwa orang tersebut bekerja di tempat tertentu, saya katakan orang yang bekerja sebagai pembangun lapangan kerja orang. Saya menempatkan nama perusahaan di sini sebagai argumen dan kemudian apa yang saya lakukan adalah saya katakan orang. Nama perusahaan itu ia sebut nama perusahaan dan mengembalikan ini karena semuanya akan menjadi antarmuka yang lancar. Kemudian saya memiliki hal yang sama untuk posisi itu. Jadi sebagai orang yang bekerja di perusahaan ini sebagai posisi string dan kemudian saya menempatkannya di posisi string. Jadi sekali lagi kita cukup menetapkan bidang dan kemudian kita mengembalikan posisi orang ini sama dengan posisi dan kemudian mengembalikan ini. Dan akhirnya kami memiliki penghasilan tahunan itu. Jadi pembangun pekerjaan orang publik mendapatkan jumlah itu dan kemudian kita hanya mengatakan penghasilan tahunan orang Daut sama dengan jumlah dan mengembalikan ini sekali lagi. Sekarang mengapa kita melakukan semua ini apa gunanya. Intinya adalah kita sekarang dapat mulai menggunakan API ini. Kita sekarang dapat membuat pembangun pribadi. Jadi saya akan melihat var P. B. adalah pembangun orang baru. Dan tentu saja saya dapat mencoba membangun seseorang. Jadi kita akan mencoba melakukan var person sama dan kemudian saya akan melihat builder orang dan saya akan pergi ke baris berikutnya dan saya akan meletakkan titik di sini. Sejauh ini anehnya kita tidak mendapatkan banyak. Itu tidak terlihat seperti orang yang membangun bahkan memiliki API untuk kami kerjakan, jadi mari kita membuat API. Sekarang kami ingin mengekspos pembangun pekerjaan orang dari pembangun orang. Dan ini sebenarnya sangat mudah karena kita bisa mengembalikan instance baru dengan argumen yang disediakan yang sedang kita bangun. Jadi begini tampilannya. Pembangun pekerjaan orang umum bekerja. Jadi itu milik umum yang disebut karya. Dan kita akan mengembalikan seorang pembangun pekerjaan orang baru yang mengambil argumen dari orang orang asli orang yang sedang dibangun. Jadi saya akan melihat orang di sini. Jadi pada dasarnya kita sekarang memiliki properti yang disebut karya dan kita dapat mulai menggunakannya sehingga kita dapat mengatakan orang pembangun Daut bekerja Daut di dan Anda dapat memberikan nama perusahaan yang Anda bisa misalnya dan kemudian saya bisa pergi ke baris berikutnya dan hanya indentasi dengan baik sebagai. Dan saya dapat mengatakan dia bekerja sebagai insinyur dan kemudian menghasilkan katakanlah seratus dua puluh tiga ribu rubel misalnya. Perhatikan segera setelah saya meletakkan semi-kolon dan bentuk-V reformat keseluruhan sehingga jenis reruntuhan presentasi saya akan membatalkannya untuk sekarang. OK jadi ini adalah satu segi orang karena informasi pekerjaan adalah segi dan ada segi lain yang merupakan alamat orang tersebut. Jadi untuk itu kita cukup membuat builder lain. Semoga Anda mengerti proses apa yang akan saya lakukan. Saya hanya akan menempel di buller alamat orang. Jadi di sini kita mulai. Pembuat alamat pribadi. Sangat sederhana. Ini juga membutuhkan referensi orang dan saya harus menekankan sekali lagi bahwa ini dengan referensi yang nyaman. Kami membangun referensi yang sama, kami memiliki referensi tunggal untuk orang-orang yang melewati semua sub-pembangun ini dan itu bagus. Tetapi jika Anda memiliki tipe nilai, Anda bisa berada dalam masalah. Haruskah kita mengatakan jelas bukan kasus kita sehingga sekarang kita memiliki pembangun alamat orang, tetapi saya dapat katakan adalah saya dapat melihat orang yang menangani pembangun alamat publik dan kemudian mengembalikan orang baru atau pembangun alamat yang lewat dan orang itu sekali lagi. OK jadi apa artinya ini bagi kita. Karena Anda dapat melihat bahwa kami sekali lagi memiliki antarmuka yang lancar, kami memiliki metode yang disebut di. Jadi orang tersebut tinggal di alamat jalan dengan kode pos begitu dan begitu di kota ini dan itu dan kami dapat menambahkan informasi ini di mana saja di pembuat orang. Jadi misalnya saya bisa masuk ke sini dan saya bisa mengatakan nyawa Dauth keluar dan saya bisa mengatakan 123 jalan London. Dan kemudian saya bisa mengurutkan indentasi secara manual di sini dan mengatakan di London dengan kode pos sebagai w 1 ke C misalnya. Jadi alasan mengapa kita dapat melompat dari membangun alamat ke membangun informasi ketenagakerjaan adalah karena baik pembangun alamat maupun pembangun pekerjaan mewarisi bahwa mereka mewarisi dari pembangun orang. Jadi mereka berdua benar-benar mengekspos setiap pembangun lain di luar sana. Dan sebagai konsekuensi dari ini ya Anda bisa, Anda dapat menulis sesuatu seperti orang dot hidup dot kehidupan dot hidup selamanya. Tidak apa-apa. Tapi Anda tahu itu hanya efek samping dari fakta bahwa Anda mencoba membuat hal-hal yang nyaman untuk digunakan. Jadi apa yang telah kami lakukan adalah kami terbiasa dengan beberapa pembangun untuk menghadirkan antarmuka yang lancar untuk membangun seseorang tetapi cukup menarik jika kami sekarang menyelaraskan orang yang tepat ini, kami jelas-jelas tidak mendapatkan orang di iklan karena orang sebenarnya pembangun pekerjaan seseorang. Itu panggilan terakhir. Jadi pertanyaannya adalah bagaimana kita bisa benar-benar mendapatkan seseorang tanpa memperkenalkan sepotong API. Dan itu mungkin lapisan gula pada kue dalam kasus ini. Jadi jika kita pergi ke builder orang apa yang sering saya lakukan yang tidak benar-benar benar dari pendekatan pemrograman tapi saya melakukan ini saya lakukan public static Complicite operator orang mengambil orang builder P. B. dan saya hanya mengembalikan orang PVD OK p kecil. Itu dia. Jadi yang saya lakukan adalah memperkenalkan operator konversi implisit kepada orang. Dan ini memungkinkan saya untuk menulis yang berikut ini. Jadi saya tidak bisa terus menggunakan jauh tetapi saya bisa menulis orang dan ini akan berfungsi dengan baik. Jadi itu sebenarnya kompilasi ini dan jalankan ini. Dan seperti yang Anda lihat, kami membuat orang yang membangun sehingga alamatnya diinisialisasi dengan benar. Kami memiliki informasi ketenagakerjaan diinisialisasi dengan benar juga. Jadi ini adalah contoh yang lebih rumit. Saya merekomendasikan agar Anda benar-benar mengunduh kode ini kemudian melompat ke dalamnya dan mencari tahu apa yang terjadi di sini karena ada sedikit tipu daya dalam cara di mana kami telah dasarnya membangun fasad sehingga fasad adalah hanya sebuah komponen yang menyembunyikan banyak informasi di belakangnya. Sekarang di sini kita telah membuat kelas-kelas dari suborders publik tetapi jelas seperti yang dapat Anda bayangkan Anda dapat membuatnya dalam kelas-kelas orang membangun atau Anda dapat menyembunyikan internal mereka dari konsumen. Itu juga sangat mungkin. Jadi ini adalah pendekatan pembangun segi.