[02] Go 디자인 모델: 원형 모델 (Prototype)
원형 모델
소개
코드 구현
참고 자료
원형 모드
프로필
프로 토 타 입 모드 (Prototype Pattern) 는 중복 되 는 대상 을 만 드 는 동시에 성능 도 보장 합 니 다.이런 유형의 디자인 모델 은 창설 형 모델 에 속 하 는데, 이것 은 창설 대상 을 만 드 는 가장 좋 은 방법 을 제공한다.
이 모드 는 현재 대상 의 복 제 를 만 드 는 데 사용 되 는 프로 토 타 입 인 터 페 이 스 를 실현 합 니 다.대상 을 직접 만 드 는 대가 가 비교적 클 때 이런 모델 을 사용한다.예 를 들 어 대상 은 높 은 대가 의 데이터 베 이 스 를 조작 한 후에 만들어 져 야 한다.모든 대상 이 같은 데 이 터 를 대량으로 가지 고 있 을 수 있 습 니 다. 이 럴 때 우 리 는 이 대상 을 캐 시 할 수 있 습 니 다. 다음 요청 시 복 제 를 되 돌려 줄 수 있 습 니 다. 일부 다른 데 이 터 를 더 믿 고 필요 할 때 데 이 터 를 입고 하여 데이터 베 이 스 를 줄 일 수 있 습 니 다.
코드 구현
원형 복사 인 터 페 이 스 를 먼저 정의 합 니 다.
type Cloneable interface {
Clone() Cloneable
}
Clone 함수 구현
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
3. 참고 자료:
1、 https://cloud.tencent.com/developer/article/1366818
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.