Jadi agak aneh mengajukan dua pertanyaan secara berurutan, tetapi mereka tidak terlalu terkait dan saya tidak ingin menggabungkannya, tapi saya bukan pertanyaan spam, saya janji!
Bagaimanapun, saya lulusan perguruan tinggi baru-baru ini, dan pendidikan saya hanya menyentuh pada pola desain ... kami menerapkan beberapa yang sederhana, menyentuh pada kenyataan bahwa ada yang lebih rumit, dan diperintahkan untuk beralih ke buku GoF jika kami ingin belajar lebih banyak. Pertanyaan saya adalah, apakah ada baiknya mempelajari pola dalam buku GoF? Bagi saya, selalu tampak kontra-intuitif untuk mencoba dan membuat masalah sesuai dengan pola klasik, tetapi jelas buku itu, dan polanya, terkenal karena suatu alasan. Apakah mereka menunjukkan cukup sehingga saya harus belajar mereka?
Terima kasih lagi!
sumber
Jawaban:
Seperti biasa
Tergantung
Tergantung pada seberapa banyak OOP yang telah Anda lakukan, apakah Anda akan mengenali atau bahkan dapat memanfaatkan pola desain
Itu tergantung pada seberapa disiplinnya Anda, apakah Anda akan menerapkan pola-pola yang pernah dipelajari dengan benar, dan tidak menjadi gila seperti pepatah pria dengan palu
Di sisi lain ... lima jari!
Jika Anda telah melakukan beberapa tahun pekerjaan OOP yang serius atau Anda memiliki mentor yang dapat diandalkan untuk membuat Anda tetap di jalur atau Anda hanya suka membaca OOP-kutu buku, maka dengan segala cara pergi membeli buku dan mempelajarinya.
Ini membantu untuk mengetahui pola sehingga Anda akan mengenali kapan harus menggunakannya, dan kapan tidak menggunakannya.
sumber
java.util.Iterator
, di mana hampir tidak tampak seperti pola. Strategi, Pengunjung, dan Fasad akan menjadi orang-orang yang secara sadar saya terapkan ketika saya melihat kebutuhan mereka.Ya, Anda harus mempelajarinya.
Lebih masuk akal untuk mengunjungi mereka kembali setelah Anda mendapatkan pengalaman , sehingga Anda dapat membandingkannya dengan apa yang Anda ketahui. Untuk beberapa pola itu akan berubah bahwa ini adalah sesuatu yang Anda temukan sendiri, tetapi Anda akan dapat mempelajari sesuatu yang lebih umum tentang penggunaannya, pengorbanan, varian, dan sebagainya. Orang lain mungkin secara langsung mengatasi masalah yang Anda atasi dan menunjukkan kepada Anda solusi elegan yang tidak Anda ketahui.
Besar mayoritas pola ini sangat berguna dan umum . Yang lain mungkin tidak sepopuler ini, tetapi masih memiliki beberapa penggunaan sempit di mana mereka sangat cocok.
Ada satu lagi alasan mengapa itu layak dibaca: Ini akan mengajarkan Anda cara berpikir . Tentu, ini bukan peluru perak, tetapi masih merupakan inspirasi yang tak ternilai.
Terakhir tetapi tidak kalah pentingnya, tidak pernah, pernah, dalam keadaan apa pun mencoba dan membuat masalah sesuai dengan pola atau alat . Itu pemikiran yang sangat buruk dan berbahaya! Memahami bagaimana alat ini bekerja dan menggunakannya dengan bijak untuk mengatasi masalah, tidak pernah sebaliknya.
Semakin banyak alat yang Anda kenal dengan baik, semakin baik. Terkadang alat dapat menginspirasi pemikiran Anda (daripada menyelesaikan masalah secara langsung), di lain waktu Anda akan menggabungkan beberapa dari mereka untuk solusi yang bagus.
Buku GOF adalah sumber yang bagus untuk banyak alat berguna yang kami gunakan setiap hari .
sumber
Manfaat paling penting dari mengetahui sedikit tentang Desain Patters, adalah Anda tahu apa arti istilah itu. Dengan kata lain Anda tahu kosakata umum .
Bagi saya, ini adalah pencapaian paling penting dari semua gejolak Pola Desain, bahwa kosa kata umum telah muncul di mana Anda dapat menggunakan nama-nama pola tertentu, dan orang lain segera tahu apa yang Anda bicarakan tanpa Anda harus menjelaskannya. . Hal-hal yang digambarkan oleh pola-pola tersebut diketahui oleh sebagian besar programmer, tetapi perlu waktu untuk menjelaskan apa yang Anda maksudkan kepada orang lain, sehingga membuat komunikasi lebih mudah untuk mengetahui nama-nama pola.
Contohnya adalah Pengunjung, Singleton, dan Dekorator.
Jadi dengan kata lain, saya sarankan Anda paling tidak akrab dengan nama dan apa yang mereka lakukan.
sumber
YA tetapi dengan hati-hati!
Bagian YA:
Terkadang, kami mengalami masalah dalam desain kami. Terkadang masalah tersebut sangat umum, sehingga pola desain memberi Anda solusi yang teruji untuk masalah tersebut. Manfaat utama dari mempelajari pola desain adalah Anda dapat membuat solusi desain jauh lebih cepat dan jika rekan kerja Anda mengetahui istilah desain pola , Anda dapat menjelaskan solusi lebih cepat juga.
Bagian dengan hati-hati:
Pola desain seharusnya tidak menjadi cawan suci solusi Anda. Solusi paling sederhana (KISS) lebih diinginkan dan berkali-kali pola desain akan membuat segalanya lebih kompleks. Jika Anda mempelajari pola desain, pelajari juga tentang pola-anti.Saya tahu beberapa orang tua yang menentang pola desain dan saya setuju sampai batas tertentu dengan mereka karena ketika Anda tidak memiliki terlalu banyak pengalaman pengkodean tetapi memuat teori pola desain, Anda mungkin akhirnya membuat menipis jauh lebih sulit untuk Anda dan Anda tim.
Terakhir, Jangan berpikir bahwa Anda harus menyesuaikan / mengganti solusi Anda hanya untuk mematuhi pola desain. Sebaliknya, Anda bisa membengkokkan pola desain sehingga bisa masuk ke dalam solusi Anda. Tidak apa-apa jika Anda tidak menggunakan setiap bahan dari resep pola desain selama Anda memiliki solusi yang lebih baik untuk masalah khusus Anda. Pikirkan pola desain sebagai saran dan bukan sebagai aturan untuk solusi Anda.
sumber
Saya telah menemukan metode Net Objectives 'berpikir tentang patters sebagai yang paling bermanfaat. Orang-orang yang membaca buku GoF terlalu sering mulai berasumsi bahwa struktur yang mereka perlihatkan, dalam notasi desain dan kode, adalah polanya dan bahwa selalu seperti ini tampilannya. Ada cara yang berbeda dan bisa dibilang lebih baik untuk melihatnya.
Pola adalah kumpulan masalah serupa yang semuanya dapat diselesaikan dengan rumus abstrak tertentu, bukan kumpulan rumus yang dapat digunakan untuk menyelesaikan berbagai masalah. Artinya adalah bahwa polanya sudah ada di sana bahkan sebelum Anda mulai mencoba membuat desain, objek dari perancang adalah menemukannya , bukan memaksakannya.
Lebih jauh, banyak orang melihat pola dan berkata, "Oh, saya baru saja menyelesaikannya dengan .... Saya tidak menggunakan pola konyol." Masalahnya adalah bahwa "...." hampir pasti menggambarkan implementasi AN dari solusi pola yang diberikan. Misalnya, berbagai fungsi pointer dapat berfungsi sebagai Rantai Tanggung Jawab meskipun ini bukan seperti resep tradisional.
Dengan pemikiran ini, fokus dalam studi Anda tentang pola harus pada masalah, bukan pada pola. Pelajari faktor-faktor yang memotivasi pola dan bagaimana mereka mengatasi faktor-faktor tersebut. Melakukan ini akan memungkinkan Anda untuk melihat pola dalam masalah dan kemudian cukup tunjukkan. Ini, bersama dengan bahasa yang diberikan pola kepada kami untuk berbicara tentang desain, memungkinkan Anda untuk mengekspos desain yang cocok untuk menjawab berbagai kesulitan yang Anda hadapi saat ini.
YA, singkatnya, pola belajar tidak hanya layak ... Anda membatasi diri Anda dengan TIDAK mempelajarinya. Saya tidak mau harus menggambarkan semua prinsip yang memotivasi dan bentuk umum dari solusi ketika saya berkata, "Sepertinya saya pengunjung."
Inilah situs web mereka: http://www.netobjectives.com/PatternRepository/index.php?title=Main_Page
sumber
Pola Desain yang dijelaskan oleh GoF adalah semacam perpanjangan alami dari paradigma OO. Jika Anda tidak benar-benar memahami tujuan OOP (enkapsulasi, pemisahan masalah, prinsip KERING, modularitas, dll.), Maka mencoba menerapkan Pola Desain dengan sukses tidak masuk akal.
Namun, jika Anda basah kuyup di OOP dunia nyata, dan mencoba untuk setia pada nilai-nilai OOP, Anda pasti akan masuk ke dalam situasi seperti yang dijelaskan oleh GoF, dan kemungkinan Anda akan menemukan solusi yang mirip dengan mereka. Setelah menyelesaikan banyak masalah serupa, Anda mungkin mulai melihat pola muncul; pada titik ini, masuk akal untuk membaca buku; idealnya, Anda akan memiliki rasa pengakuan, dan Anda akan segera menghargai keanggunan dan kebersihan pola yang diusulkan. Kemungkinannya adalah Anda juga akan mempertimbangkan beberapa pola ini tanpa otak (yang, begitu Anda mengetahuinya, banyak di antaranya). Anda juga akan dapat menilai dengan baik apakah suatu pola tertentu berlaku dalam situasi tertentu.
Dan inilah peringatan lain: Hanya karena Anda tahu semua pola ini tidak berarti Anda harus menerapkannya di mana-mana. Beberapa dari mereka cukup pintar, dan orang-orang tergoda untuk menggunakannya bahkan ketika mereka sangat tidak pantas, pola Singleton menjadi contoh paling terkenal (banyak kontroversi Singleton berasal dari penggunaan yang tidak tepat, misalnya ketika tidak ada manfaatnya memiliki satu -instrance-only constraint).
sumber
Pola desain mencoba memecahkan masalah desing.
Saya belajar pola kemudian, setelah saya tahu beberapa pemrograman fungsional, UML, desing basis data, struktur data dan algoritma. Saya sebenarnya baru saja membuat daftar desain pola-pola ini di lembar contekan dan mengangguk bahwa saya sudah tahu sebagian besar dari mereka. Beberapa sangat bagus seperti pola singleton atau "komunikasi" (pengunjung, mediator) ...
sumber
Saya setuju dengan poin yang dibuat dalam beberapa jawaban lain tentang bagaimana bisa berbahaya menerapkan pola desain dengan sedikit pengalaman.
Namun, saya sangat merekomendasikan membaca setidaknya bab pertama dari buku GoF. Bagian pertama akan memperkenalkan Anda pada pola desain, tetapi sebenarnya lebih banyak tentang prinsip-prinsip desain OO, dan ini harus bermanfaat untuk dibaca dan dipahami bahkan dengan pengalaman yang relatif sedikit. (Beberapa ide kunci yang saya ingat termasuk "merangkum konsep-konsep yang berbeda-beda", "hierarki warisan harus luas tetapi tidak dalam".) Hampir memalukan bahwa karya itu dikenal sebagian besar karena 23 polanya - pembahasannya tentang prinsip-prinsip desain OO yang menginformasikan pola-pola itu juga sangat berharga.
sumber
Benar! Anda harus belajar tidak hanya pola desain perangkat lunak, tetapi teknik desain secara umum. Mempelajari solusi umum untuk masalah umum adalah awal yang fantastis. Terutama sekali Anda mulai menggali pola dan pengorbanannya.
Buku Gang of Four asli dikembangkan dengan memeriksa banyak proyek perangkat lunak dan melihat teknik yang telah digunakan sejumlah pengembang untuk memecahkan masalah. Para penulis memperhatikan beberapa teknik yang sangat bagus, serta sejumlah yang diterapkan dalam proyek-proyek yang sangat terpisah dan bekerja untuk mengabstraksi mereka bahkan lebih untuk digunakan terlepas dari domain.
Ini adalah masalah besar. Anda tidak membuat masalah cocok dengan solusinya. Sebagai gantinya, buku pola desain Geng Empat memiliki bagian "masalah" untuk setiap pola, dan katalog pola lainnya memiliki bagian yang serupa, yang menjelaskan kapan Anda harus menerapkan setiap pola. Ini juga menggambarkan "konsekuensi" dari penggunaan pola - jika Anda mencoba menghindari konsekuensi, maka menggunakan pola bukanlah ide terbaik.
sumber