Maison > Article > développement back-end > Quels sont les modèles de conception couramment utilisés dans le framework golang ?
Les modèles de conception courants dans le framework Go incluent : le modèle Singleton : une classe qui garantit une seule instance ; le modèle Factory : crée un objet sans spécifier son type spécifique ; le modèle Visiteur : ajoute de nouvelles opérations à une structure d'objet existante. Ces modèles contribuent à améliorer l’évolutivité, la flexibilité et la maintenabilité des applications Go.
Modèles de conception couramment utilisés dans le framework Go
Les modèles de conception sont un ensemble de solutions réutilisables aux problèmes courants de développement de logiciels. Ils fournissent un moyen standardisé de résoudre des types spécifiques de structure de code ou de problèmes de comportement.
Le framework Go fournit une série de modèles de conception intégrés pour simplifier et modulariser votre base de code. Voici quelques-uns des modèles de conception les plus couramment utilisés :
Modèle Singleton
Le modèle Singleton garantit qu'une classe n'a qu'une seule instance. Généralement utilisé pour gérer l'accès partagé aux ressources, telles que les connexions à la base de données ou les objets de configuration.
type MySingleton struct { instance *singleton } func (s *MySingleton) GetInstance() *singleton { if s.instance == nil { s.instance = newSingleton() } return s.instance } func newSingleton() *singleton { return &singleton{} }
Factory Pattern
Factory Pattern est responsable de la création d'objets sans spécifier leur type exact. Permet de changer le type d'objets créés dans l'application sans modifier le code client.
type Factory interface { Create() Product } type ConcreteFactory1 struct {} func (f *ConcreteFactory1) Create() Product { return &ConcreteProduct1{} } type ConcreteFactory2 struct {} func (f *ConcreteFactory2) Create() Product { return &ConcreteProduct2{} } type Product interface { ... } type ConcreteProduct1 struct {} type ConcreteProduct2 struct {}
Visitor Pattern
Le modèle de visiteur vous permet d'ajouter de nouvelles opérations aux structures d'objets existantes sans les modifier elles-mêmes. Cela permet d'effectuer diverses opérations sans modifier l'objet.
type Visitor interface { Visit(subj Subject) string } type Subject interface { Accept(v Visitor) string } type ConcreteSubject1 struct {} func (s *ConcreteSubject1) Accept(v Visitor) string { return v.Visit(s) } type ConcreteVisitor1 struct {} func (v *ConcreteVisitor1) Visit(subj Subject) string { return "ConcreteVisitor1 visited ConcreteSubject1" }
Cas pratiques :
Modèle Singleton :
// 数据库连接单例 var db *sql.DB func GetDB() *sql.DB { if db == nil { db, _ = sql.Open("mysql", "user:password@tcp(host:port)/database") } return db }
Modèle d'usine :
// 创建不同类型对象的工厂 func CreateRenderer(rendererType string) Renderer { switch rendererType { case "text": return &TextRenderer{} case "html": return &HTMLRenderer{} default: panic("Unknown renderer type") } }
Modèle visiteur :
// 用于对不同类型对象执行不同操作的访问者 func VisitShapes(shapes []Shape, v Visitor) { for _, shape := range shapes { fmt.Println(shape.Accept(v)) } } // 不同类型的形状对象 type Circle struct {} type Square struct {} // 形状的接受方法,接受访问者并执行特定操作 func (c *Circle) Accept(v Visitor) string { return v.VisitCircle(c) } func (s *Square) Accept(v Visitor) string { return v.VisitSquare(s) } // 访问者接口,定义对不同形状对象的访问操作 type Visitor interface { VisitCircle(c *Circle) string VisitSquare(s *Square) string }
En utilisant ces modèles de conception, peut améliorer la disponibilité de vos applications Go , flexibilité et maintenabilité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!