安徽中颐建设投资有限公司网站,网页设计免费下载,wordpress文章下载美化框,大学生创新产品设计作品目录
简单工厂模式#xff08;Simple Factory Pattern#xff09;
简单工厂模式的核心角色
优缺点
代码实现 简单工厂模式#xff08;Simple Factory Pattern#xff09; 简单工厂模式又称为静态工厂方法(Static Factory Method)模式。在简单工厂模式中#xff0c;可以…目录
简单工厂模式Simple Factory Pattern
简单工厂模式的核心角色
优缺点
代码实现 简单工厂模式Simple Factory Pattern 简单工厂模式又称为静态工厂方法(Static Factory Method)模式。在简单工厂模式中可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例被创建的实例通常都具有共同的父类。
简单工厂模式的核心角色 1、抽象产品Abstract Product是简单工厂创建的所有对象的抽象父类/接口负责描述所有实例的行为。 2、具体产品Concrete Product是简单工厂模式的创建目标。 3、简单工厂是简单工厂模式的核心负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用创建所需的产品对象。
优缺点 1优点简单。 2缺点如果具体产品扩产就必须修改工厂内部增加Case一旦产品过多就会导致简单工厂过于臃肿。
代码实现
package mainimport fmt// 抽象产品Printer 简单工厂要返回的接口类型
type Printer interface {Print(name string) string
}// 具体产品CnPrinter 是 Printer 接口的实现它说中文
type CnPrinter struct {
}func (*CnPrinter) Print(name string) string {return fmt.Sprintf(你好%s, name)
}// 具体产品EnPrinter 是 Printer 接口的实现它说中文
type EnPrinter struct {
}func (*EnPrinter) Print(name string) string {return fmt.Sprintf(Hello%s, name)
}// 工厂
type Factory struct {
}func (f Factory) NewPrinter(lang string) Printer {switch lang {case cn:return new(CnPrinter)case en:return new(EnPrinter)default:return new(CnPrinter)}
}func main() {// 创建一个工厂类在应用中可以将这个工厂类实例作为一个全局变量factory : new(Factory)// 在工厂类中传入不同的参数获取不同的实例ePrinter : factory.NewPrinter(en)fmt.Println(ePrinter.Print(Zhang))cPrinter : factory.NewPrinter(cn)fmt.Println(cPrinter.Print(张))
}