Golangのプロトタイプデザインパターン

よう皆!あなたとアレックスと私はでデザインパターンの使用上の記事の私達のシリーズを続けGolangの言語





この知識の領域がGolang言語の世界にどのように適用できるかを理解するために、あなたからフィードバックを受け取ることは興味深いことですすでにテンプレートを見てきました:Simple FactorySingletonStrategy今日は、別のデザインパターンであるプロトタイプについて検討したいと思います。





それは何のために必要ですか?

これは、実装の詳細に立ち入ることなくオブジェクトをコピーできるジェネレーティブデザインパターンです。





それはどのような問題を解決しますか?

コピーする必要のあるオブジェクトがあると想像してください。どうやるか?同じクラスの空のオブジェクトを作成してから、すべてのフィールドの値を古いオブジェクトから新しいオブジェクトに1つずつコピーします。結構ですが、ニュアンスがあります!状態の一部がプライベートになる可能性があるため、すべてのオブジェクトをこの方法でコピーできるわけではありません。つまり、残りのプログラムコードにはアクセスできません。





別の問題もあります。コピーコードは、コピーされたオブジェクトのクラスに依存するようになります。結局のところ、オブジェクトのすべてのフィールドを反復処理するには、そのクラスにバインドする必要があります。このため、特定のクラスではなく、インターフェイスのみを知っているオブジェクトをコピーすることはできません。





解決策は何ですか?

プロトタイプテンプレートは、コピーするオブジェクト自体にコピーを作成するように指示します。クローン作成をサポートするすべてのオブジェクトに共通のインターフェースを導入します。これにより、特定のクラスにバインドされることなくオブジェクトをコピーできます。通常、このようなインターフェイスにはクローンメソッドが1つしかありません。





. . , . , , , . , . .





- . , , . -, , . . , , .





プロトタイプクラス図
Prototype Class Diagram

, . - clone. . . , , . , . .





?

, PHP . Prototype Golang.





- . , . ..   , - . , . , - , , .. 





- , . , , , ..





, , prototype



, clone



. struct



, show



clone



prototype



.





, . directory



, prototype



. . show



, clone



. clone



, - , . , _clone



.





. . , . :





Open directory 2
  Directory 2
    Directory 1
        category 1
    category 2
    category 3


Clone and open directory 2
  Directory 2_clone
    Directory 1_clone
        category 1_clone
    category 2_clone
    category 3_clone
      
      



?

  1. . , . , -, . .





  2. . , - , , . . , .





, Prototype :





  • .





  • , .





  • , abstract factory, .





, , . 63% , Golang - . , , , Golang - . , . , , .





, , . .

!








All Articles