专栏名称: silsuer在掘金
后端研发 - go/php
目录
相关文章推荐
钱江晚报  ·  突然飙涨!熔断后继续上冲 ·  2 小时前  
杭州交通918  ·  刘晓庆突发!已发公告 ·  昨天  
杭州日报  ·  51岁吴京,自曝意外! ·  2 天前  
杭州交通918  ·  刚刚!彭于晏回应与蔡依林恋情! ·  2 天前  
51好读  ›  专栏  ›  silsuer在掘金

golang设计模式之工厂方法模式

silsuer在掘金  · 掘金  ·  · 2018-11-08 07:24

正文

请到「今天看啥」查看全文


阅读 21

golang设计模式之工厂方法模式

工厂方法模式

wiki: 工厂方法模式(英语:Factory method pattern)是一种实现了“工厂”概念的面向对象设计模式。就像其他创建型模式一样,它也是处理在不指定对象具体类型的情况下创建对象的问题。工厂方法模式的实质是“定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。”

上面是 维基百科 中对工厂方法的定义,在上一篇 golang设计模式之简单工厂模式 中我们介绍过,唯一的一个工厂控制着 所有产品的实例化,而 工厂方法 中包括一个工厂接口,我们可以动态的实现多种工厂,达到扩展的目的

  • 简单工厂需要:

    1. 工厂结构体
    2. 产品接口
    3. 产品结构体
  • 工厂方法需要:

    1. 工厂接口
    2. 工厂结构体
    3. 产品接口
    4. 产品结构体

简单工厂 中,依赖于唯一的工厂对象,如果我们需要实例化一个产品,那么就要向工厂中传入一个参数获取对应对象,如果要增加一种产品,就要在工厂中修改创建产品的函数,耦合性过高 ,而在 工厂方法 中,依赖工厂接口,我们可以通过实现工厂接口,创建多种工厂,将对象创建由一个对象负责所有具体类的实例化,变成由一群子类来负责对具体类的实例化,将过程解耦。

下面用代码实现:

例如,我们现在有一个产品需要被创建,那么先构建工厂接口和产品接口


  // 工厂接口
  type FactoryInterface interface {
  	  CreateProduct(t string) ProductInterface
  }

 // 产品接口






请到「今天看啥」查看全文