工厂模式:
定义一个用于创建对象的接口,让子类决定实例化哪一个类
抽象工厂模式:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类
个人觉得这个区别在于产品,如果产品单一,最合适用工厂模式,但是如果有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。再通俗深化理解下:工厂模式针对的是一个产品等级结构 ,抽象工厂模式针对的是面向多个产品等级结构的。
工厂方法模式 抽象工厂模式
针对的是一个产品等级结构 针对的是面向多个产品等级结构
一个抽象产品类 多个抽象产品类
可以派生出多个具体产品类 每个抽象产品类可以派生出多个具体产品类
一个抽象工厂类,可以派生出多个具体工厂类 一个抽象工厂类,可以派生出多个具体工厂类
每个具体工厂类只能创建一个具体产品类的实例 每个具体工厂类可以创建多个具体产品类的实例
加减乘除四则运算器工厂模式举例子
1 | package main |
在上面的例子当中,如果对面向对象没有接触的话可能会有一些不好理解,在go语言当中面向对象可能和别的语言有一些不同,go语言是利用匿名字段来实现继承,在上面的例子中多态函数的实现可以让函数调用更加方便,比如每个结构体类都有10几个甚至更多的函数,那么直接都把这些函数封装在多态的函数里面,那么每次调用直接传递一个结构体类给多态函数就直接全部调用了,这样就是很方便的