Dalam rangka kerja Go, corak reka bentuk menyediakan set alat untuk mencipta kod yang boleh diselenggara, boleh dikembangkan dan boleh diuji. Corak biasa termasuk: Corak Singleton: memastikan bahawa kelas hanya mempunyai satu contoh, digunakan untuk akses global kepada sumber tertentu. Corak Kaedah Kilang: Membenarkan penciptaan dinamik pelbagai jenis objek berdasarkan keperluan. Corak pemerhati: membenarkan objek melanggan kemas kini acara dan memberitahu pelanggan apabila peristiwa berlaku.
Apabila membina aplikasi Go yang kompleks, corak reka bentuk boleh memberikan kami set alat yang berkuasa untuk membantu kami mencipta kod yang boleh diselenggara, boleh dikembangkan dan boleh diuji. Panduan ini akan memperkenalkan beberapa corak reka bentuk yang biasa digunakan dalam rangka kerja Go dan membantu anda memahami aplikasi praktikalnya melalui kod sampel.
Corak singleton memastikan bahawa hanya satu contoh kelas wujud. Ia sesuai untuk apabila aplikasi memerlukan akses global kepada sumber tertentu.
Kes Praktikal: Kolam Sambungan Pangkalan Data
// 数据库连接池单例 type DatabasePool struct { db *sql.DB } var pool *DatabasePool func GetPool() *DatabasePool { if pool == nil { pool = &DatabasePool{ db: sql.Open("mysql", "..."), } } return pool }
Corak Kaedah Kilang membolehkan kami mencipta pelbagai cara objek yang berbeza tanpa menyatakan kelas konkritnya. Ini membolehkan kami menukar secara dinamik cara objek dicipta berdasarkan keperluan kami.
Kes Praktikal: Mencipta Laluan URL
// URL 路由工厂 type RouteFactory interface { CreateRoute(path string) Route } // 具体路由实现 type StaticRoute struct { path string } type DynamicRoute struct { path string } // 工厂方法实例 func NewStaticRouteFactory() RouteFactory { return &StaticRouteFactory{} } func NewDynamicRouteFactory() RouteFactory { return &DynamicRouteFactory{} }
Corak Pemerhati membenarkan objek melanggan kemas kini acara. Apabila peristiwa berlaku, ia memberitahu semua pelanggan.
Kes Praktikal: Pengelogan Acara
// 事件日志观察者 type LoggerObserver struct { logWriter io.Writer } func (l *LoggerObserver) Update(e Event) { fmt.Fprintln(l.logWriter, e) } // 事件主体 type EventBus struct { observers []Observer } func (b *EventBus) AddObserver(o Observer) { b.observers = append(b.observers, o) } func (b *EventBus) Notify(e Event) { for _, o := range b.observers { o.Update(e) } }
Selain corak ini, terdapat banyak corak reka bentuk lain yang digunakan secara meluas dalam rangka kerja Go. Dengan memahami dan menggunakan corak ini dengan berkesan, kami boleh mencipta aplikasi Go yang teguh dan boleh diselenggara.
Atas ialah kandungan terperinci Bagaimana untuk menggunakan corak reka bentuk dalam rangka kerja golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!