网站开发设计文档模板湖南手机版建站系统开发
文章目录
- 1. 概念
- 1.1 简述
- 1.2 角色
- 1.3 类图
- 2. 代码示例
- 2.1 设计
- 2.2 代码
- 2.3 类图
1. 概念
1.1 简述
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
1.2 角色
- Prototype(抽象原型类):它是声明克隆方法的接口,或所有具体原型类的公共父类
它可以是抽象类也可以是接口,甚至还可以是具体实现类。
- ConcretePrototype(具体原型类):它实现在抽象原型类中声明的克隆方法,在克隆方法中返回自己的一个克隆对象。
- Client(客户类):
让一个原型对象克隆自身从而创建一个新的对象,只需要直接实例化或通过工厂方法等方式创建一个原型对象,再通过调用该对象的克隆方法即可得到多个相同的对象。
1.3 类图
2. 代码示例
2.1 设计
- 创建一个
将军
类- 它有4个方法:
设置人员信息
、设置装备
、查询
、克隆
- 它有4个方法:
- 调用
- 实例化一个将军
关羽
- 用
关羽
的克隆
方法实例化继承人
- 用
继承人
的设置人员信息
方法修改继承人的信息
- 实例化一个将军
2.2 代码
package mainimport "fmt"// 定义抽象原型
type Prototype interface {Clone() Prototype
}
//定义具体原型
type ConcretePrototype struct {Name stringModelA stringModelB 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)
}