[02] 이동 디자인 패턴 : 프로토 타입 모드 (프로토 타입)

프로토 타입 모드

I. 서론

원형 모형 (원형 패턴) 성능을 확보하면서, 대상물의 복제본을 생성하는 데 사용된다. 디자인 패턴이 유형의 개체를 만들 수있는 가장 좋은 방법을 제공 스키마를 만들 속한다.

이 모델은 인터페이스의 복제를 위해 만든 현재 객체의 프로토 타입 인터페이스를 구현됩니다. 때이 모델을 사용하여, 상대적으로 대형의 객체를 생성하는 직접 비용. 데이터베이스 비싼 작업 후, 예를 들어, 객체가 생성 될 필요가있다. 업데이트 데이터 저장 데이터베이스를 줄이기 위해 필요할 때 동일한 데이터의 큰 숫자를 할 수 있습니다 각 개체, 우리가 객체를 캐시 할 수있는이 시간, 그것은, 요청 클론 만 이상의 서로 다른 데이터 통신 수단을 필요로 다음 시간을 반환 상호 작용.

둘째, 코드 구현

프로토 타입 복사본의 인터페이스를 정의하려면

type Cloneable interface {
   Clone()  Cloneable
}

복제 기능을 달성

type Person struct {
    name string
    age int
    height int
}

func (p *Person) Clone() Cloneable {
    person := *p
    return &person
}

func(p *Person) SetName(name string) {
    p.Name = name
}

func(p *Person) SetAge(age int) {
    p.Age = age
}

전체 코드 구현을보기

package main

import "fmt"

type Cloneable interface {
    Clone() Cloneable
}

type Person struct {
    Name string
    Age int
    Height int
}

func (p *Person) Clone() *Person {
    person := *p
    return &person
}

func(p *Person) SetName(name string) {
    p.Name = name
}

func(p *Person) SetAge(age int) {
    p.Age = age
}

func main() {

    p := &Person{
        Name: "zhang san",
        Age: 20,
        Height: 175,
    }

    p1 :=p.Clone()
    p1.SetAge(30)
    p1.SetName("Li Si")

    fmt.Println("name:", p1.Name)
    fmt.Println("age:", p1.Age)
    fmt.Println("height:", p1.Height)
}

출력 :

name: Li si
age: 30
height: 175

전체 코드 주소 : https://gitee.com/ncuzhangben/GoStudy/tree/master/go-design-pattern/02-Prototype

셋째, 참조 :

1 https://cloud.tencent.com/developer/article/1366818

추천

출처www.cnblogs.com/0pandas0/p/12038136.html