Golang (Go 言語とも呼ばれる) は、Google によって開発されたプログラミング言語であり、オブジェクト指向プログラミングにおける独自の設計パターンを持っています。この記事では、Golang の一般的なオブジェクト指向設計パターンを検討し、これらのパターンがどのように実装されるかを示す具体的なコード例を示します。
シングルトン パターンは、最も一般的に使用される設計パターンの 1 つで、クラスのインスタンスが 1 つだけ存在することを保証し、グローバル アクセス ポイントを提供します。 Golang では、sync.Once
を使用してシングルトン モードを実装できます。
package singleton import "sync" type singleton struct{} var instance *singleton var once sync.Once func GetInstance() *singleton { once.Do(func() { instance = &singleton{} }) return instance }
ファクトリ パターンは、特定のクラスを指定せずにオブジェクトを作成するための統一インターフェイスを提供する作成デザイン パターンです。 Golang では、インターフェイスと特定のファクトリ構造を定義することでファクトリ パターンを実装できます。
package factory type Shape interface { draw() string } type Circle struct{} func (c *Circle) draw() string { return "Drawing a circle" } type Rectangle struct{} func (r *Rectangle) draw() string { return "Drawing a rectangle" } type ShapeFactory struct{} func (f *ShapeFactory) GetShape(shapeType string) Shape { switch shapeType { case "circle": return &Circle{} case "rectangle": return &Rectangle{} default: return nil } }
オブザーバー パターンは、1 対多の依存関係を定義する動作設計パターンです。監視対象の状態が変化すると、それに依存するすべてのオブザーバーが変化します。通知されました。 Golang では、channel
を使用してオブザーバー パターンを実装できます。
package observer type Subject struct { observers []Observer } func (s *Subject) Attach(observer Observer) { s.observers = append(s.observers, observer) } func (s *Subject) Notify(message string) { for _, observer := range s.observers { observer.Update(message) } } type Observer interface { Update(message string) } type ConcreteObserver struct{} func (o *ConcreteObserver) Update(message string) { println("Received message:", message) }
戦略パターンは、一連のアルゴリズムを定義し、これらのアルゴリズムを交換可能にする動作設計パターンです。 Golang では、インターフェイスと特定の戦略構造を定義することで戦略パターンを実装できます。
package strategy type Strategy interface { doOperation(int, int) int } type Add struct{} func (a *Add) doOperation(num1, num2 int) int { return num1 + num2 } type Subtract struct{} func (s *Subtract) doOperation(num1, num2 int) int { return num1 - num2 }
上記のサンプル コードを通じて、シングルトン パターン、ファクトリー パターン、オブザーバー パターン、ストラテジ パターンなど、Golang で一般的に使用されるオブジェクト指向設計パターンを簡単に紹介しました。これらの設計パターンは、プログラマがコードをより適切に整理および設計するのに役立ち、コードの再利用性と保守性が向上します。この記事がお役に立てば幸いです!
以上がGolang のオブジェクト指向設計パターンを分析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。