kaedah kilang golang

May 10, 2023 pm 09:13 PM

Golang ialah bahasa pengaturcaraan yang berkuasa, cekap dan boleh dipercayai. Sintaksnya yang ringkas dan prestasi yang berkuasa menjadikannya pilihan pertama bagi banyak pembangun. Golang menyediakan corak reka bentuk kaedah kilang (Factory Method) yang boleh membantu kita menyelesaikan masalah penciptaan objek.

1. Corak Kaedah Kilang

Sebelum menerangkan corak kaedah kilang, mari kita lihat contoh dahulu. Sebagai contoh, kita mempunyai struktur bernama "Orang":

type Person struct {
    name string
    age int
}
Salin selepas log masuk

Sekarang kita perlu mencipta tika objek Orang Kita boleh menggunakan kod berikut untuk menciptanya:

p := Person{"Tom", 30}
Salin selepas log masuk

Penciptaan ini Tidak ada yang salah dengan kaedah ini, tetapi apabila kita perlu mencipta beberapa contoh Orang yang berbeza, kita perlu menggunakan kaedah ini berulang kali. Jika kita perlu melakukan beberapa operasi semasa penciptaan (seperti membuat pertimbangan atau rekod tertentu), maka kaedah ini akan menjadi sangat menyusahkan.

Pada masa ini, kaedah kilang boleh berguna. Kaedah kilang ialah corak penciptaan, yang memberikan idea untuk merangkum proses penciptaan objek. Ia meninggalkan penciptaan objek kepada kelas kilang ini akan mencipta objek yang sepadan mengikut keperluan yang berbeza.

Di Golang, kami boleh melaksanakan kaedah kilang melalui kaedah struktur. Secara khusus, kaedah kilang mengandungi antara muka mudah dan satu atau lebih struktur yang melaksanakan antara muka ini. Struktur ini dipanggil "kelas kilang konkrit", dan mereka melaksanakan kaedah dalam antara muka untuk menyelesaikan penciptaan objek yang berbeza.

2. Pelaksanaan kaedah kilang

Seterusnya, mari kita lihat contoh untuk memahami proses pelaksanaan kaedah kilang:

Pertama, kami mentakrifkan antara muka, yang mengandungi A kaedah untuk mencipta objek:

type Creator interface {
    Create() Product
}
Salin selepas log masuk

Seterusnya, kami mentakrifkan antara muka Produk, yang mentakrifkan kaedah Tunjukkan:

type Product interface {
    Show()
}
Salin selepas log masuk

Kemudian, kami melaksanakan dua struktur Produk khusus, masing-masing untuk ProductA dan ProductB. Kedua-dua struktur ini melaksanakan antara muka Produk:

type ProductA struct{}

func (p *ProductA) Show() {
    fmt.Println("A product is showing")
}

type ProductB struct{}

func (p *ProductB) Show() {
    fmt.Println("B product is showing")
}
Salin selepas log masuk

Akhirnya, kami melaksanakan dua struktur Pencipta khusus, iaitu CreatorA dan CreatorB. Kedua-dua struktur ini melaksanakan antara muka Pencipta dan masing-masing mengembalikan ProductA dan ProductB.

type CreatorA struct{}

func (c *CreatorA) Create() Product {
    return &ProductA{}
}

type CreatorB struct{}

func (c *CreatorB) Create() Product {
    return &ProductB{}
}
Salin selepas log masuk

Kami kini boleh menggunakan kod berikut untuk mencipta Produk yang berbeza:

creatorA := &CreatorA{}
productA := creatorA.Create()
productA.Show()

creatorB := &CreatorB{}
productB := creatorB.Create()
productB.Show()
Salin selepas log masuk

Dalam kod di atas, kami mencipta contoh CreatorA dan CreatorB masing-masing, dan kemudian menggunakan kaedah Cipta untuk mencipta ProductA dan ProdukB . Akhir sekali, kami memanggil kaedah Tunjukkan Produk untuk memaparkan maklumat produk yang berbeza.

3. Kelebihan kaedah kilang

  1. Kaedah kilang boleh membantu kita decouple. Ia memisahkan penciptaan objek daripada logik perniagaan tertentu, menjadikannya bebas. Dengan cara ini, sebaik sahaja kaedah penciptaan objek perlu diubah suai, kami hanya perlu mengubah suai kelas kilang tertentu tanpa mengubah suai kod lain yang berkaitan.
  2. Kaedah kilang boleh membantu kami mencapai penggunaan semula kod. Kelas kilang boleh dipanggil oleh berbilang kelas pelanggan, dengan itu mencapai penggunaan semula kod. Apabila kita perlu mencipta berbilang objek yang serupa, kita boleh menggunakan kelas kilang yang sama berulang kali.
  3. Kaedah kilang boleh membantu kami meningkatkan kebolehselenggaraan kod kami. Memusatkan kaedah penciptaan objek dalam kelas kilang boleh menjadikan kod lebih jelas dan lebih mudah dibaca.

4. Ringkasan

Corak kaedah kilang Golang boleh membantu kami menyelesaikan masalah penciptaan objek dan memainkan peranan membantu yang sangat baik semasa mencipta objek. Kelebihannya termasuk penyahgandingan, penggunaan semula kod, kebolehselenggaraan yang tinggi, dsb. Apabila kita perlu mencipta berbilang objek, menggunakan corak kaedah kilang boleh menjadikan kod lebih ringkas dan jelas, sambil meningkatkan kebolehselenggaraan kod.

Atas ialah kandungan terperinci kaedah kilang golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana saya menulis objek dan stub untuk ujian di GO? Bagaimana saya menulis objek dan stub untuk ujian di GO? Mar 10, 2025 pm 05:38 PM

Artikel ini menunjukkan penciptaan dan stub di GO untuk ujian unit. Ia menekankan penggunaan antara muka, menyediakan contoh pelaksanaan mengejek, dan membincangkan amalan terbaik seperti menjaga mocks fokus dan menggunakan perpustakaan penegasan. Articl

Bagaimana anda menulis ujian unit di GO? Bagaimana anda menulis ujian unit di GO? Mar 21, 2025 pm 06:34 PM

Artikel ini membincangkan ujian unit menulis di GO, meliputi amalan terbaik, teknik mengejek, dan alat untuk pengurusan ujian yang cekap.

Bagaimana saya boleh menentukan kekangan jenis tersuai untuk generik di GO? Bagaimana saya boleh menentukan kekangan jenis tersuai untuk generik di GO? Mar 10, 2025 pm 03:20 PM

Artikel ini meneroka kekangan jenis adat Go untuk generik. Ia memperincikan bagaimana antara muka menentukan keperluan jenis minimum untuk fungsi generik, meningkatkan keselamatan jenis dan kebolehgunaan semula kod. Artikel ini juga membincangkan batasan dan amalan terbaik

Bagaimana saya boleh menggunakan alat pengesanan untuk memahami aliran pelaksanaan aplikasi saya? Bagaimana saya boleh menggunakan alat pengesanan untuk memahami aliran pelaksanaan aplikasi saya? Mar 10, 2025 pm 05:36 PM

Artikel ini meneroka menggunakan alat pengesanan untuk menganalisis aliran pelaksanaan aplikasi GO. Ia membincangkan teknik instrumentasi manual dan automatik, membandingkan alat seperti Jaeger, Zipkin, dan OpenTelemetry, dan menonjolkan visualisasi data yang berkesan

Bagaimana anda menggunakan alat PPROF untuk menganalisis prestasi GO? Bagaimana anda menggunakan alat PPROF untuk menganalisis prestasi GO? Mar 21, 2025 pm 06:37 PM

Artikel ini menerangkan cara menggunakan alat PPROF untuk menganalisis prestasi GO, termasuk membolehkan profil, mengumpul data, dan mengenal pasti kesesakan biasa seperti CPU dan isu memori.

Terangkan tujuan Pakej Refleksi Go. Bilakah anda akan menggunakan refleksi? Apakah implikasi prestasi? Terangkan tujuan Pakej Refleksi Go. Bilakah anda akan menggunakan refleksi? Apakah implikasi prestasi? Mar 25, 2025 am 11:17 AM

Artikel ini membincangkan pakej GO's Reflect, yang digunakan untuk manipulasi kod runtime, bermanfaat untuk siri, pengaturcaraan generik, dan banyak lagi. Ia memberi amaran tentang kos prestasi seperti pelaksanaan yang lebih perlahan dan penggunaan memori yang lebih tinggi, menasihati penggunaan yang bijak dan terbaik

Bagaimana anda menggunakan ujian yang didorong oleh jadual di GO? Bagaimana anda menggunakan ujian yang didorong oleh jadual di GO? Mar 21, 2025 pm 06:35 PM

Artikel ini membincangkan menggunakan ujian yang didorong oleh jadual di GO, satu kaedah yang menggunakan jadual kes ujian untuk menguji fungsi dengan pelbagai input dan hasil. Ia menyoroti faedah seperti kebolehbacaan yang lebih baik, penurunan duplikasi, skalabiliti, konsistensi, dan a

Bagaimana anda menggunakan sync.waitGroup untuk menunggu pelbagai goroutine selesai? Bagaimana anda menggunakan sync.waitGroup untuk menunggu pelbagai goroutine selesai? Mar 19, 2025 pm 02:51 PM

Artikel ini menerangkan cara menggunakan Sync.WaitGroup dalam GO untuk menguruskan operasi serentak, memperincikan permulaan, penggunaan, perangkap biasa, dan amalan terbaik.

See all articles