Go设计模式之Factory

前言:

  设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是设计模式能被广泛应用的原因。

工厂模式:

  这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象

直接看下面的例子

package main

import "fmt"

type car interface {
	color()
}

type dz struct {

}

func (d *dz) color() {
	fmt.Printf("this is %s\n dz car", "red")
}

type bc struct {

}

func (b *bc) color() {
	fmt.Printf("this is %s\n bc car", "yellow")
}

// 工厂
type CarFactory struct {

}

func (this CarFactory) Produce(typ string) car {
	switch typ {
	case "dz":
		return this.PrdouceDZ()
	case "bc":
		return this.ProduceBC()
	default:
		return nil
	}

}

func (CarFactory) PrdouceDZ() car {
	return new(dz)
}

func (CarFactory) ProduceBC() car {
	return new(bc)
}

  首先创建了一个接口

  然后创建了2个类并且实现了接口

  创建了一个工厂

  创建了2个根据不同传的类返回不同的实习类

 

!!!作为一种创建类模式,在任何需要生成复杂对象的地方,都可以使用工厂方法模式。有一点需要注意的地方就是复杂对象适合使用工厂模式,而简单对象,特别是只需要通过 new 就可以完成创建的对象,无需使用工厂模式。如果使用工厂模式,就需要引入一个工厂类,会增加系统的复杂度。

 

  设计模式是一种思想 任何语言都可以实现 ,这里只是以go为例。

 

2017年12月26日23:28:02[小路·写·设计篇]

  

 

posted @ 2017-12-26 23:29  漫步小路  阅读(380)  评论(0编辑  收藏  举报