当前位置: 首页 > 最新文章 > 正文

Go语言的简单工厂模式SimpleFactory代码实现

package mainimport "fmt"//简单工厂模式func main() { var asf = SimpleFactory{Types: "A"} a := asf.makeProduct() a.work() var bsf = SimpleFactory{Types: "B"} b := bsf.makeProduct() b.work()}//抽象产品

admin

package mainimport "fmt"//简单工厂模式func main() { var asf = SimpleFactory{Types: "A"} a := asf.makeProduct() a.work() var bsf = SimpleFactory{Types: "B"} b := bsf.makeProduct() b.work()}//抽象产品type Product interface {work()}//产品Atype ProductA struct {}//产品Btype ProductB struct {}func work(){ fmt.Println}func work(){fmt.Println}//简单工厂type SimpleFactory struct { Types string //产品类型}func makeProduct() Product{ if s.Types == "A"{ return new }else{ return new }}运行效果:E:\go\src\01>go run SimpleFactory.go生产产品A生产产品B简单工厂模式每增加一个产品就要增加一个具体产品类和一个对应的具体工厂类,这增加了系统的复杂度,违背了“开闭原则”。

package mainimport "fmt"//简单工厂模式func main() {   var asf = SimpleFactory{Types: "A"}   a := asf.makeProduct()   a.work()   var bsf = SimpleFactory{Types: "B"}   b := bsf.makeProduct()   b.work()}//抽象产品type Product interface {work()}//产品Atype ProductA struct {}//产品Btype ProductB struct {}func (p * ProductA) work(){ fmt.Println("生产产品A")}func (p * ProductB) work(){fmt.Println("生产产品B")}//简单工厂type SimpleFactory struct { Types string //产品类型}func (s *SimpleFactory) makeProduct() Product{     if s.Types == "A"{        return  new(ProductA) }else{ return new(ProductB) }}

运行效果:


E:\go\src\01>go run SimpleFactory.go生产产品A生产产品B

简单工厂模式每增加一个产品就要增加一个具体产品类和一个对应的具体工厂类,这增加了系统的复杂度,违背了“开闭原则”。


上一篇: 什么是变量?|数据百科 006 下一篇:天津市政协委员沈欣:鼓励农民“家门口”创业,多举措增加收入
返回顶部