Go简单工厂模式

232 阅读2分钟

在Go语言中,简单工厂模式是一种生成器模式,它将生成对象的代码封装在一个工厂类中,其职责是创建对象。

该模式允许客户端通过使用与接口或类无关的方式来创建对象,并通过传递参数来避免创建其他具体实例。这种方式非常方便并且易于维护,因为它将所有的实例化过程集中在一个类中。

示例

下面是一个简单的示例,演示如何使用简单工厂模式在Go中创建Parser接口实例。我们将模拟HTTP协议中的请求和响应,并根据给定的请求类型创建相应的Parser实例。

// 定义parser接口
type Parser interface {
    Parse(body []byte) (interface{}, error)
}

// 定义不同的parser类型
type JSONParser struct{}
type XMLParser struct{}

// 实现parser接口
func (p *JSONParser) Parse(body []byte) (interface{}, error) {
    // 解析JSON并返回结果
}

func (p *XMLParser) Parse(body []byte) (interface{}, error) {
    // 解析XML并返回结果
}

// 定义一个factory,用于根据请求类型创建相应的parser
type ParserFactory struct {}

// 工厂方法,返回相应的parser实例
func (f *ParserFactory) CreateParser(requestType string) Parser {
    switch requestType {
    case "json":
        return &JSONParser{}
    case "xml":
        return &XMLParser{}
    default:
        return nil
    }
}

在上面的示例中,我们定义了Parser接口并实现了JSONParserXMLParser。然后,我们还定义了一个ParserFactory,该工厂根据给定的请求类型创建相应的parser实例。

下面是如何使用上述简单工厂模式的示例代码:

parserFactory := &ParserFactory{}
jsonParser := parserFactory.CreateParser("json")
xmlParser := parserFactory.CreateParser("xml")

通过创建一个ParserFactory对象,我们可以根据需要创建不同类型的Parser实例。对于JSON类型的请求,我们传递“json”作为参数,然后调用CreateParser方法,它将返回一个JSON格式的Parser实例。类似地,如果我们传递“xml”作为参数,将返回一个XML格式的Parser实例。

总结

通过使用简单工厂模式,我们可以将对象创建过程封装到一个单独的工厂类中,从而使代码更加简洁和易于维护。在Go语言中,简单工厂模式非常有用,特别是当我们需要根据不同的请求类型创建不同的对象时。