博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大话设计模式(Golang) 一、简单工厂模式
阅读量:6039 次
发布时间:2019-06-20

本文共 1097 字,大约阅读时间需要 3 分钟。

hot3.png

模式特点:工厂类根据条件产生不同功能的运算类对象,客户端不需要知道具体的运算类。

程序实例:四则运算计算器,根据用户的输入产生相应的运算类,用这个运算类处理具体的运算。

package mainimport (	"fmt")type Operation struct {	a float64	b float64}func (this *Operation) Init(a float64, b float64) {	this.a = a	this.b = b}type Operator interface {	GetResult() float64	Init(a float64, b float64)}type Add struct {	Operation}func (this *Add) GetResult() float64 {	return this.a + this.b}type Sub struct {	Operation}func (this *Sub) GetResult() float64 {	return this.a - this.b}type Mul struct {	Operation}func (this *Mul) GetResult() float64 {	return this.a * this.b}type Div struct {	Operation}func (this *Div) GetResult() float64 {	return this.a / this.b}type OperationFactory struct {}func (this *OperationFactory) CreateOperator(oper byte) (operator Operator) {	switch oper {	case '+':		operator = &Add{}	case '-':		operator = &Sub{}	case '*':		operator = &Mul{}	case '/':		operator = &Div{}	default:		panic("运算符号错误!")	}	return}func main() {	f := &OperationFactory{}	add := f.CreateOperator('+')	add.Init(1, 2)	fmt.Println(add.GetResult())}

 

转载于:https://my.oschina.net/zhoukuo/blog/710050

你可能感兴趣的文章
让我去健身的不是漂亮小姐姐,居然是贝叶斯统计!
查看>>
MySQL 数据约束
查看>>
我的友情链接
查看>>
SERVLET容器简介与JSP的关系
查看>>
《服务器SSH Public Key认证指南》-补充
查看>>
我的友情链接
查看>>
Java break continue return 的区别
查看>>
算法(Algorithms)第4版 练习 1.3.4
查看>>
jquery easyUI checkbox复选项获取并传后台
查看>>
浅析NopCommerce的多语言方案
查看>>
设计模式之简单工厂模式
查看>>
C++中变量的持续性、链接性和作用域详解
查看>>
2017 4月5日上午
查看>>
Google Chrome开发者工具
查看>>
第一阶段冲刺报告(一)
查看>>
使用crontab调度任务
查看>>
【转载】SQL经验小记
查看>>
zookeeper集群搭建 docker+zk集群搭建
查看>>
Vue2.5笔记:Vue的实例与生命周期
查看>>
论JVM爆炸的几种姿势及自救方法
查看>>