深入了解GoLang中的工厂设计模式
短信预约 -IT技能 免费直播动态提醒
1. 定义
工厂模式是一种创建型设计模式,有了工厂只需要知道要制造的东西名字,就能让对应工厂进行生产,不用关心生产过程。
2. 优点
1、一个调用者想创建一个对象,只要知道其名称就可以了。
2、扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。
3、屏蔽产品的具体实现,调用者只关心产品的接口。
3. 代码实现
3.1 普通工厂
package factory
type HeroFactory interface {
Name(str string)
}
type WoManHero struct {
Age string
Hight float32
}
func (w WoManHero) Name(str string) {
panic("implement me")
}
type ManHero struct {
Age string
Hight float32
}
func (m ManHero) Name(str string) {
panic("implement me")
}
// 简单工厂模式
func NewHeroFactory(sex int) HeroFactory {
switch sex {
case 0:
return ManHero{}
case 1:
return WoManHero{}
default:
return nil
}
}
3.2 工厂方法
package factory
type IRuleHeroFactor interface {
CreateHero() HeroFactory
}
type WoManHeroFactory struct {
}
func (s WoManHeroFactory) CreateHero() HeroFactory {
return &WoManHero{}
}
type ManHeroFactory struct {
}
func (p ManHeroFactory) CreateHero() HeroFactory {
return &ManHero{}
}
// NewIRuleConfigParserFactory 用一个简单工厂封装工厂方法
func NewIRuleConfigParserFactory(t string) IRuleHeroFactor {
switch t {
case "M":
return ManHeroFactory{}
case "W":
return WoManHeroFactory{}
}
return nil
}
3.3 抽象工厂
抽象接口里包含了各自的工厂方法或者普通工厂,再由各自实现自己的工厂
package factory
// IRuleConfigParser IRuleConfigParser
type IRuleConfigParser interface {
Parse(data []byte)
}
// jsonRuleConfigParser jsonRuleConfigParser
type jsonRuleConfigParser struct{}
// Parse Parse
func (j jsonRuleConfigParser) Parse(data []byte) {
panic("implement me")
}
// ISystemConfigParser ISystemConfigParser
type ISystemConfigParser interface {
ParseSystem(data []byte)
}
// jsonSystemConfigParser jsonSystemConfigParser
type jsonSystemConfigParser struct{}
// Parse Parse
func (j jsonSystemConfigParser) ParseSystem(data []byte) {
panic("implement me")
}
// IConfigParserFactory 工厂方法接口
type IConfigParserFactory interface {
CreateRuleParser() IRuleConfigParser
CreateSystemParser() ISystemConfigParser
}
type jsonConfigParserFactory struct{}
func (j jsonConfigParserFactory) CreateRuleParser() IRuleConfigParser {
return jsonRuleConfigParser{}
}
func (j jsonConfigParserFactory) CreateSystemParser() ISystemConfigParser {
return jsonSystemConfigParser{}
}
IConfigParserFactory
包含了IRuleConfigParser
和ISystemConfigParser
两个解析器,再分别由jsonRuleConfigParser
和jsonConfigParserFactory
实现对应的解析方法
到此这篇关于深入了解GoLang中的工厂设计模式的文章就介绍到这了,更多相关GoLang工厂模式内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341