Go フレームワークでは、デザイン パターンにより、保守可能、拡張可能、テスト可能なコードを作成するためのツールセットが提供されます。一般的なパターンは次のとおりです。 シングルトン パターン: クラスが特定のリソースへのグローバル アクセスに使用されるインスタンスを 1 つだけ持つことを保証します。ファクトリ メソッド パターン: 要件に基づいてさまざまなタイプのオブジェクトを動的に作成できます。オブザーバー パターン: オブジェクトがイベント更新をサブスクライブし、イベントが発生したときにサブスクライバーに通知できるようにします。
複雑な Go アプリケーションを構築する場合、デザイン パターンは、保守可能、拡張可能、テスト可能なコードの作成に役立つ強力なツールセットを提供します。このガイドでは、Go フレームワークで一般的に使用されるいくつかの設計パターンを紹介し、サンプル コードを通じてその実際のアプリケーションを理解するのに役立ちます。
シングルトン パターンは、クラスのインスタンスが 1 つだけ存在することを保証します。これは、アプリケーションが特定のリソースへのグローバル アクセスを必要とする場合に最適です。
実践的なケース: データベース接続プール
// 数据库连接池单例 type DatabasePool struct { db *sql.DB } var pool *DatabasePool func GetPool() *DatabasePool { if pool == nil { pool = &DatabasePool{ db: sql.Open("mysql", "..."), } } return pool }
ファクトリ メソッド パターンを使用すると、具体的なクラスを指定せずに、さまざまな方法でオブジェクトを作成できます。これにより、ニーズに基づいてオブジェクトの作成方法を動的に変更することができます。
実際のケース: 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{} }
Observer パターンを使用すると、オブジェクトがイベント更新をサブスクライブできます。イベントが発生すると、すべてのサブスクライバーに通知されます。
実用的なケース: イベントログ
// 事件日志观察者 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) } }
これらのパターンに加えて、Go フレームワークでは広く使用されている他のデザイン パターンが多数あります。これらのパターンを理解し、効果的に適用することで、堅牢で保守可能な Go アプリケーションを作成できます。
以上がGolang フレームワークでデザインパターンを適用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。