原型模式

原型模式

原型接口

package prototype

type Cloneable interface{
    clone() Cloneable
}

执行深拷贝的原型对象

package prototype

type Deep struct {
    name string
}

func NewDeep(name string) *Deep {
    deep := new(Deep)
    deep.name = name
    return deep
}

func (d *Deep)clone()Cloneable{
    copy := *d
    return &copy
}

执行浅拷贝的原型对象

package prototype

type Fleet struct {
    name string
}

func NewFleet(name string) *Fleet {
    fleet := new(Fleet)
    fleet.name = name
    return fleet
}

func (f *Fleet)clone()Cloneable{
    return f
}

测试文件

package prototype

import (
	"fmt"
    "testing"
)
func TestPrototype(T *testing.T){
    d := NewDeep("tom")
    d1 := d.clone()
    fmt.Println(d == d1)
    f := NewFleet("jack")
    f1 := f.clone()
    fmt.Println(f == f1)
}
posted @ 2022-09-07 12:32  理科土拨鼠  阅读(18)  评论(0)    收藏  举报