Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Menulis corak reka bentuk berorientasikan objek menggunakan bahasa Go

Menulis corak reka bentuk berorientasikan objek menggunakan bahasa Go

WBOY
WBOYasal
2023-07-21 17:01:151328semak imbas

Gunakan bahasa Go untuk menulis corak reka bentuk berorientasikan objek

Corak reka bentuk ialah satu siri ringkasan pengalaman dan amalan terbaik untuk menyelesaikan masalah yang biasa digunakan dalam pembangunan perisian. Dalam pengaturcaraan berorientasikan objek, corak reka bentuk membantu kami membina kod yang boleh diselenggara, boleh digunakan semula dan boleh dikembangkan. Artikel ini akan memperkenalkan beberapa corak reka bentuk yang biasa digunakan dan menggunakan contoh kod dalam bahasa Go untuk menunjukkan penggunaannya.

1. Corak Singleton

Corak singleton ialah corak reka bentuk yang memastikan bahawa kelas hanya mempunyai satu contoh. Dalam Go, singletons dilaksanakan menggunakan pembina peribadi dan pembolehubah statik.

package singleton

type singleton struct{}

var instance *singleton

func GetInstance() *singleton {
    if instance == nil {
        instance = &singleton{}
    }
    return instance
}

Dalam contoh di atas, pembina persendirian memastikan bahawa kelas tidak boleh dibuat secara luaran, dan satu-satunya contoh kelas diperoleh melalui fungsi GetInstance. Apabila GetInstance dipanggil buat kali pertama, ia akan dinilai sama ada kejadian itu kosong. Jika ia kosong, kejadian baharu akan dibuat.

2. Corak Kilang

Corak Kilang ialah corak reka bentuk untuk mencipta objek. Dalam bahasa Go, objek boleh dibuat dengan menggunakan antara muka dan pelaksanaan konkrit, dan antara muka abstrak boleh digunakan untuk menyembunyikan pelaksanaan konkrit.

package factory

type Shape interface {
    Draw()
}

type Circle struct{}

func (c *Circle) Draw() {
    fmt.Println("Draw a circle")
}

type Rectangle struct{}

func (r *Rectangle) Draw() {
    fmt.Println("Draw a rectangle")
}

type ShapeFactory struct{}

func (s *ShapeFactory) CreateShape(shapeType string) Shape {
    if shapeType == "circle" {
        return &Circle{}
    } else if shapeType == "rectangle" {
        return &Rectangle{}
    }
    return nil
}

Dalam contoh di atas, Produk dalam corak kilang ditakrifkan oleh antara muka Shape, dan produk tertentu Circle dan Rectangle melaksanakan antara muka Shape. ShapeFactory ialah kilang yang mencipta objek Shape melalui fungsi CreateShape dan menjadikan produk tertentu berdasarkan parameter shapeType yang diluluskan.

3. Corak Pemerhati

Corak Pemerhati ialah hubungan pergantungan satu-ke-banyak antara objek Apabila keadaan objek berubah, semua objek bergantungnya akan dimaklumkan dan dikemas kini. Dalam bahasa Go, corak pemerhati boleh dilaksanakan melalui antara muka dan fungsi panggil balik.

package observer

type Subject interface {
    Attach(Observer)
    Detach(Observer)
    Notify()
}

type Observer interface {
    Update()
}

type ConcreteSubject struct {
    observers []Observer
}

func (c *ConcreteSubject) Attach(observer Observer) {
    c.observers = append(c.observers, observer)
}

func (c *ConcreteSubject) Detach(observer Observer) {
    for i := 0; i < len(c.observers); i++ {
        if c.observers[i] == observer {
            c.observers = append(c.observers[:i], c.observers[i+1:]...)
            break
        }
    }
}

func (c *ConcreteSubject) Notify() {
    for _, observer := range c.observers {
        observer.Update()
    }
}

type ConcreteObserver struct{}

func (c *ConcreteObserver) Update() {
    fmt.Println("Observer is updated")
}

Dalam contoh di atas, antara muka Subjek mentakrifkan tingkah laku seperti Attach, Detach, and Notify, dan ConcreteSubject ialah pelaksanaan khusus Subjek. Antara muka Observer mentakrifkan kaedah Kemas Kini, dan ConcreteObserver melaksanakan antara muka Observer. Apabila keadaan Subjek berubah, ia akan memberitahu semua Pemerhati melalui kaedah Notify.

Ringkasan

Di atas hanya memperkenalkan tiga corak reka bentuk yang biasa digunakan dan menggunakan contoh kod dalam bahasa Go untuk menunjukkan penggunaannya. Dalam pembangunan sebenar, corak reka bentuk boleh membantu kami meningkatkan kebolehselenggaraan, kebolehskalaan dan kebolehgunaan semula kod. Walau bagaimanapun, corak reka bentuk bukanlah ubat penawar, dan corak yang sesuai perlu dipilih berdasarkan keperluan sebenar. Saya harap pembaca dapat memahami lebih mendalam tentang corak reka bentuk melalui artikel ini dan menggunakannya secara fleksibel dalam pembangunan sebenar.

Atas ialah kandungan terperinci Menulis corak reka bentuk berorientasikan objek menggunakan bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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