哪个网站做校招物流网站建设策划书
文章目录
- 1. 概念
 - 1.1 角色
 - 1.2 类图
 
- 2. 代码示例
 - 2.1 设计
 - 2.2 代码
 - 2.3 类图
 
1. 概念
1.1 角色
- Builder(抽象建造者):给出一个抽象接口,以规范产品对象的各个组成成分的建造。
 - ConcreteBuilder(具体建造者):它们在应用程序调用下创建产品的实例
 - Director(导演者):调用具体建造者角色以创建产品对象。
 
它没有产品类的具体知识,真正拥有产品类的具体知识的是具体建造者。
- Product(产品):产品便是建造中的复杂对象。
 
1.2 类图
2. 代码示例
2.1 设计
- 定义一个产品
Product,它包含PartA、PartB两个成员 - 定义一个抽象建造者
Builder- 它有
BuildPartA()、BuildPartB()两个方法 
 - 它有
 - 定义具体建造者
ConcreteBuilder- 它依赖产品
Product - 它有
BuildPartA()、BuildPartB()两个方法,分别用来创建Product的两个部分。 
 - 它依赖产品
 - 定义导演者
Director- 它关联了建造者
Builder - 它的
Construct()方法调用建造者创建产品 
 - 它关联了建造者
 - 调用 
- 实例化一个产品
product - 实例化一个建造者
builder,它依赖产品实例product - 实例化一个导演者
director,它关联建造者builder - 用导演者
director的Construct()方法创建产品 - 打印结果检查
 
 - 实例化一个产品
 
2.2 代码
package mainimport "fmt"// 定义产品
type Product struct {PartA stringPartB string
}// 定义抽象建造者
type Builder interface {BuildPartA(p string)BuildPartB(p string)
}// 定义具体建造者
type ConcreteBuilder struct {product *Product
}func (c *ConcreteBuilder) BuildPartA(p string) {c.product.PartA = p
}func (c *ConcreteBuilder) BuildPartB(p string) {c.product.PartB = p
}// 定义导演者
type Director struct {builder Builder
}func (d *Director) Construct(partAInfo string, partBInfo string) {d.builder.BuildPartA(partAInfo)d.builder.BuildPartB(partBInfo)
}// 测试代码
func main() {product := &Product{}builder := &ConcreteBuilder{product: product}director := &Director{builder: builder}director.Construct("刀头", "刀柄")fmt.Println(product)
}
 
2.3 类图

