Gof:Prototypeパターン

公開:2026.06.01(月) 03:25

Prototypeパターン

Prototypeパターンは、既存のインスタンスをコピー(複製)して新しいオブジェクトを生成するデザインパターンです。同じオブジェクトを何度もnewで生成するコストが高い場合や、生成処理が複雑な場合に役立ちます。

構成要素

Prototype(抽象クラス/インターフェース)
インスタンスを複製するためのメソッド(例:Clone)を定義します

ConcretePrototype(具象クラス)
実際に複製されるクラスで、Cloneメソッドの具体的な処理を実装します

Visual Basic(VB.NET)実装例

' 1. Prototype インターフェース
Public Interface IPrototype
    Function Clone() As IPrototype
End Interface

' 2. ConcretePrototype クラス
Public Class ConcretePrototype
    Implements IPrototype

    Public Property Name As String
    Public Property Value As Integer

    Public Sub New(name As String, value As Integer)
        Me.Name = name
        Me.Value = value
    End Sub

    ' 自身の複製を返すメソッド
    Public Function Clone() As IPrototype Implements IPrototype.Clone
        ' 浅いコピー(MemberwiseClone)を作成
        Return CType(Me.MemberwiseClone(), IPrototype)
    End Function

    Public Sub ShowInfo()
        Console.WriteLine($"Name: {Name}, Value: {Value}")
    End Sub
End Class

' 3. クライアント側での使用例
Public Module Module1
    Public Sub Main()
        ' オリジナルのインスタンスを作成
        Dim original As New ConcretePrototype("Original", 100)
        original.ShowInfo()

        ' インスタンスを複製(Prototypeパターン)
        Dim cloneObj As ConcretePrototype = CType(original.Clone(), ConcretePrototype)
        cloneObj.Name = "Cloned" ' 複製された方のプロパティを変更

        ' 結果の確認
        cloneObj.ShowInfo() ' Valueは100が引き継がれている
    End Sub
End Module
※ VB.NETでは、Object.MemberwiseCloneメソッドを使用すると、クラスの現在のインスタンスの簡易コピー(浅いコピー)を簡単に作成できます。


0 件のコメント:

その他の記事