golang实现抽象工厂模式
2016-02-26 14:43
357 查看
在项目过程中,遇到某处需要使用工厂模式,因此写了个测试代码进行测试,
首先定义了interface Worker,其中包含一个接口Work(task *string)
然后定义创建Worker的interface WorkerCreator,包含一个接口Create() ,返回值为Worker
我们假设有一个工种程序员,实现了Work接口,同时定义其构造类,实现Create()接口
再设想一种工种农场主:
编写测试代码
首先定义了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) }
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- android string.xml文件中的整型和string型代替
- Android java 与 javascript互访(相互调用)的方法例子
- android上改变listView的选中颜色
- String.intern
- Go 语言 Channel 实现原理精要
- Go语言将支持Android
- Prototype源码浅析 String部分(二)
- Ruby中的String对象学习笔记
- PostgreSQL ERROR: invalid escape string 解决办法
- 浅谈C++中的string 类型占几个字节
- 标准C++类string的Copy-On-Write技术
- C++实现string存取二进制数据的方法
- C#中string和StingBuilder内存中的区别实例分析
- 介绍php设计模式中的工厂模式
- PHP STRING 陷阱原理说明
- c#中 String和string的区别介绍
- C#实现的图片、string相互转换类分享
- asp.net 简单工厂模式和工厂方法模式之论述
- asp.net String.IsNullOrEmpty 方法