1. 概念
1.1 簡述
用原型實例指定創(chuàng)建對象的種類,并且通過拷貝這些原型創(chuàng)建新的對象
1.2 角色
- Prototype(抽象原型類):它是聲明克隆方法的接口,或所有具體原型類的公共父類
它可以是抽象類也可以是接口,甚至還可以是具體實現(xiàn)類。
- ConcretePrototype(具體原型類):它實現(xiàn)在抽象原型類中聲明的克隆方法,在克隆方法中返回自己的一個克隆對象。
- Client(客戶類):
讓一個原型對象克隆自身從而創(chuàng)建一個新的對象,只需要直接實例化或通過工廠方法等方式創(chuàng)建一個原型對象,再通過調(diào)用該對象的克隆方法即可得到多個相同的對象。文章來源:http://www.zghlxwxcb.cn/news/detail-619901.html
1.3 類圖
2. 代碼示例
2.1 設計
- 創(chuàng)建一個
將軍
類- 它有4個方法:
設置人員信息
、設置裝備
、查詢
、克隆
- 它有4個方法:
- 調(diào)用
- 實例化一個將軍
關羽
- 用
關羽
的克隆
方法實例化繼承人
- 用
繼承人
的設置人員信息
方法修改繼承人的信息
- 實例化一個將軍
2.2 代碼
package main
import "fmt"
// 定義抽象原型
type Prototype interface {
Clone() Prototype
}
//定義具體原型
type ConcretePrototype struct {
Name string
ModelA string
ModelB string
}
func (c *ConcretePrototype) Clone() Prototype {
pN := &ConcretePrototype{
Name: c.Name,
ModelA: c.ModelA,
ModelB: c.ModelB,
}
return pN
}
func main() {
//實例化一個原型
prototype := &ConcretePrototype{
Name: "liubei",
ModelA: "AAA",
ModelB: "BBB",
}
//用原型復制兩個實例
cloneA := prototype.Clone()
cloneB := prototype.Clone()
//查看結果
fmt.Println(cloneA, cloneB)
}
2.3 類圖
文章來源地址http://www.zghlxwxcb.cn/news/detail-619901.html
到了這里,關于《golang設計模式》第一部分·創(chuàng)建型模式-02-原型模式(Prototype)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!