家政网站模板下载,最好永久免费素材网,wordpress获取登录用户的名字,购物网站建设模板适用场景
一个系统要独立于它的产品的创建、组合和表示时。一个系统要由多个产品系列中的一个来配置时。当你要强调一系列相关的产品对象的设计以便进行联合使用时。当你提供一个产品类库#xff0c;而只想显示它们的接口而不是实现时
架构演示 首先client这个东西可以接触到…适用场景
一个系统要独立于它的产品的创建、组合和表示时。一个系统要由多个产品系列中的一个来配置时。当你要强调一系列相关的产品对象的设计以便进行联合使用时。当你提供一个产品类库而只想显示它们的接口而不是实现时
架构演示 首先client这个东西可以接触到三个接口, 分别是
全局的 abstract factory, 用来构造对应的子 abstract factory然后我们可以通过子 abstract factory 去构造相应的 abstract product局部的 abstract product, 用来从上面的 abstract factory 获取对应的属性
好处就是:
abstract factory 约束了创建接口的行为abstract product 约束了对应产品的行为
代码演示
首先创建一个工厂接口
type ISportFactory interface {MakeShoe() IShoeMakeShirt() IShirt
}对应的一个产品, 我们可以通过抽象工厂搞出来的两个东西
type IShoe interface {setLogo(logo string)setSize(size int)getLogo() stringGetSize() int
}type IShirt interface {setLogo(logo string)setSize(size int)getLogo() stringGetSize() int
}我们首先看一下对应的工厂函数:
func GetSportsFactory(brand string) ISportFactory {if brand adidas {return Adidas{}}if brand nike {return Nike{}}return nil
}然后我们看实例的具体实现也就是makeshoe
func (adids *Adidas) MakeShoe() IShoe {return AdidsShoe{Shoe: Shoe{logo: adidas,size: 10,},}
}同样的我们可以到
//实现了ishoe接口
type Shoe struct {logo stringsize int
}