| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package Abstract_Factory
- import "fmt"
- //抽象工厂
- type AbstractFactory interface {
- CreateProductOne() AbstractProduct
- CreateProductTwo() AbstractProduct
- }
- //具体工厂
- type Factory1 struct{}
- func (*Factory1) CreateProductOne() AbstractProduct {
- fmt.Println("ProductOne by one")
- return &ProductOne{}
- }
- func (*Factory1) CreateProductTwo() AbstractProduct {
- fmt.Println("ProductTwo by one")
- return &ProductTwo{}
- }
- //type Factory2 struct{}
- //
- //func (*Factory2) CreateProductOne() *ProductThree {
- // fmt.Println("ProductThree by two")
- // return &ProductThree{}
- //}
- //func (*Factory2) CreateProductTwo() *ProductFour {
- // fmt.Println("ProductFour by two")
- // return &ProductFour{}
- //}
- //抽象产品
- type AbstractProduct interface {
- Introduce()
- }
- //具体产品
- type ProductOne struct{}
- func (*ProductOne) Introduce() {
- fmt.Println("This is product one")
- }
- type ProductTwo struct{}
- func (*ProductTwo) Introduce() {
- fmt.Printf("This is product two")
- }
- //具体产品
- //type ProductThree struct {}
- //func (*ProductThree)Introduce(){
- // fmt.Println("This is product three")
- //}
- //type ProductFour struct {}
- //func (*ProductFour)Introduce(){
- // fmt.Printf("This is product four")
- //}
|