Rumah > pembangunan bahagian belakang > Golang > Golang - Bagaimana Chef dan Pelayan Mengajar Prinsip Tanggungjawab Tunggal

Golang - Bagaimana Chef dan Pelayan Mengajar Prinsip Tanggungjawab Tunggal

Barbara Streisand
Lepaskan: 2025-01-16 12:21:59
asal
478 orang telah melayarinya

Selamat datang ke ansuran pertama siri prinsip SOLID saya yang memfokuskan pada Golang! Siri ini akan membedah setiap prinsip reka bentuk SOLID, membimbing anda ke arah mencipta aplikasi Go yang lebih boleh diselenggara dan berskala. Kami bermula dengan Prinsip Tanggungjawab Tunggal (SRP) – konsep asas yang menekankan kod yang lebih bersih dengan memastikan setiap modul mengendalikan satu tugasan. ?


?️ Memahami Prinsip Tanggungjawab Tunggal

Prinsip Tanggungjawab Tunggal menetapkan:

Kelas, modul atau fungsi sepatutnya mempunyai satu sebab sahaja untuk berubah.

Pada asasnya, setiap komponen harus menumpukan pada satu tanggungjawab. Kod berbilang tugas menjadi sukar untuk dikekalkan dan dikembangkan tanpa memperkenalkan ralat. Mematuhi SRP meningkatkan modulariti, kebolehgunaan semula dan kebolehujian.

Golang - How a Chef and Waiter Teach the Single Responsibility Principle

?? Contoh SRP Dunia Sebenar: The Chef and the Waiter

Pertimbangkan restoran yang sibuk. Dua peranan utama memastikan kepuasan pelanggan:

  • The Chef: Tumpuan semata-mata pada penyediaan makanan.
  • Pelayan: Menguruskan pesanan, menghidangkan makanan dan memenuhi keperluan pelanggan.

Bayangkan satu orang melaksanakan kedua-dua peranan. Chef yang berhenti seketika memasak untuk menerima pesanan akan:

  • Servis lambat.
  • Tangguhkan penyediaan makanan.
  • Tingkatkan potensi ralat.

Senario ini tidak cekap; satu orang menyulap tugas yang tidak berkaitan membawa kepada huru-hara.

Memohon SRP dalam Tetapan Restoran

Mengikuti Prinsip Tanggungjawab Tunggal:

  • Chef menyediakan makanan semata-mata.
  • Pelayan menguruskan pesanan dan perkhidmatan pelanggan semata-mata.

Perpisahan ini membolehkan setiap individu untuk cemerlang dalam peranan khusus mereka, menghasilkan pengalaman makan yang lebih cekap dan positif. ?✨

? SRP dalam Pembangunan Perisian

Sama seperti contoh restoran, kod anda harus menstruktur kelas dan fungsi untuk mengendalikan hanya satu tanggungjawab. Ini meningkatkan kebolehselenggaraan, mempercepatkan perubahan dan meminimumkan ralat.

SRP Beraksi dengan Golang

Mari kita periksa bagaimana pelanggaran SRP boleh menghasilkan kod rapuh dan tidak terurus.

❌ Contoh: Melanggar SRP

Pertimbangkan sistem pengurusan pesanan kedai kopi asas:

<code>package main

import "fmt"

// Order stores coffee order details.
type Order struct {
    CustomerName string
    CoffeeType   string
    Price        float64
}

// ProcessOrder handles multiple responsibilities.
func (o *Order) ProcessOrder() {
    // Handles payment processing
    fmt.Printf("Processing payment of $%.2f for %s\n", o.Price, o.CustomerName)

    // Prints receipt
    fmt.Printf("Receipt:\nCustomer: %s\nCoffee: %s\nAmount: $%.2f\n", o.CustomerName, o.CoffeeType, o.Price)
}

func main() {
    order := Order{CustomerName: "John Doe", CoffeeType: "Cappuccino", Price: 4.50}
    order.ProcessOrder()
}</code>
Salin selepas log masuk
Salin selepas log masuk

Struktur Order mengendalikan penyimpanan data, pemprosesan pembayaran dan pencetakan resit – pelanggaran SRP yang jelas. Mengubah suai mana-mana aspek memberi kesan ProcessOrder, menghalang kebolehselenggaraan.

?️ Pemfaktoran Semula untuk Mematuhi SRP

Mari kita pisahkan tanggungjawab kepada komponen yang berbeza:

<code>package main

import "fmt"

// Order stores coffee order details.
type Order struct {
    CustomerName string
    CoffeeType   string
    Price        float64
}

// ProcessOrder handles multiple responsibilities.
func (o *Order) ProcessOrder() {
    // Handles payment processing
    fmt.Printf("Processing payment of $%.2f for %s\n", o.Price, o.CustomerName)

    // Prints receipt
    fmt.Printf("Receipt:\nCustomer: %s\nCoffee: %s\nAmount: $%.2f\n", o.CustomerName, o.CoffeeType, o.Price)
}

func main() {
    order := Order{CustomerName: "John Doe", CoffeeType: "Cappuccino", Price: 4.50}
    order.ProcessOrder()
}</code>
Salin selepas log masuk
Salin selepas log masuk

? Kelebihan SRP

  • Pemisahan Kebimbangan: Order menyimpan data; PaymentProcessor mengendalikan pembayaran; ReceiptPrinter menjana resit.
  • Kebolehujian Dipertingkat: PaymentProcessor dan ReceiptPrinter boleh diuji secara bebas.
  • Penyelenggaraan Ringkas: Perubahan pemformatan resit tidak akan menjejaskan pemprosesan pembayaran.

❓ Bila Memohon SRP

Kenal pasti pelanggaran seperti:

  • Fungsi atau struct yang melaksanakan tugas yang tidak berkaitan.
  • Modul mencampurkan kebimbangan (mis., logik perniagaan dan I/O).

✨ Kesimpulan

Prinsip Tanggungjawab Tunggal memudahkan pemahaman, penyelenggaraan dan pengembangan kod. Ini baru permulaan! Siaran seterusnya dalam siri ini meneroka "O" dalam SOLID: Prinsip Terbuka/Tertutup.

Anda juga boleh meneroka siaran saya sebelum ini tentang Suntikan Ketergantungan, teknik OOP yang penting.

Selamat pengekodan! ?


Ikuti saya untuk kemas kini tentang siaran akan datang:

  • Linkedin
  • Github
  • Twitter/X

Atas ialah kandungan terperinci Golang - Bagaimana Chef dan Pelayan Mengajar Prinsip Tanggungjawab Tunggal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan