golang實現抽象工廠模式
阿新 • • 發佈:2019-01-07
在專案過程中,遇到某處需要使用工廠模式,因此寫了個測試程式碼進行測試,
- 首先定義了interface Worker,其中包含一個介面Work(task *string)
- 然後定義建立Worker的interface WorkerCreator,包含一個介面Create() ,返回值為Worker
type Worker interface {
Work(task *string)
}
type WorkerCreator interface {
Create() Worker
}
我們假設有一個工種程式設計師,實現了Work介面,同時定義其構造類,實現Create()介面
type Programmer struct {
}
func (p *Programmer) Work(task *string) {
fmt.Println("Programmer process", *task)
}
type ProgrammerCreator struct {
}
func (c *ProgrammerCreator) Create() Worker {
s := new(Programmer)
return s
}
再設想一種工種農場主:
type Farmer struct {
}
func (f *Farmer) Work(task *string ) {
fmt.Println("Farmer process", *task)
}
type FarmerCreator struct {
}
func (c *FarmerCreator) Create() Worker {
s := new(Farmer)
return s
}
編寫測試程式碼
func main() {
var c WorkerCreator
c = new(ProgrammerCreator)
p := c.Create()
taskProject := "Project"
p.Work(&taskProject)
c = new(FarmerCreator)
f := c.Create ()
taskFarmland := "farmland"
f.Work(&taskFarmland)
}