内容简介:这个系列是《大话设计模式》的读后感,将书中的设计模式用golang实现。第一个设计模式是简单工厂模式,主要用到的知识点是类的多态表示不同的类可以执行相同的方法,但要通过它们自己的实现代码来执行。
这个系列是《大话设计模式》的读后感,将书中的 设计模式 用golang实现。
第一个设计模式是简单工厂模式,主要用到的知识点是类的 多态 。
多态表示不同的类可以执行相同的方法,但要通过它们自己的实现代码来执行。
而在golang中没有类的概念,我们可以借助接口(interface)类型实现类的多态。
如果一个类型实现了接口的所有方法,那么就可以说这个类型实现了这个接口。
我们要实现两个数字的加减乘除操作作为示例
package simplefactory
import "fmt"
// 1. 定义一个接口类型,子类必须实现GoResult方法来实现该接口
type Operation interface {
GetResult(a float64, b float64) (float64, error)
}
// 2. 初始化工厂类方法,传入操作符,返回对应的类
func NewOperation(operstring)Operation {
switch oper {
case "+":
return &operationAdd{}
case "-":
return &operationSub{}
case "*":
return &operationMul{}
case "/":
return &operationDiv{}
default:
return nil
}
}
// 加法
type operationAdd struct{}
func (o *operationAdd)GetResult(afloat64, bfloat64)(float64, error) {
return a + b, nil
}
// 减法
type operationSub struct{}
func (o *operationSub)GetResult(afloat64, bfloat64)(float64, error) {
return a - b, nil
}
// 乘法
type operationMul struct{}
func (o *operationMul)GetResult(afloat64, bfloat64)(float64, error) {
return a * b, nil
}
// 除法
type operationDiv struct{}
func (o *operationDiv)GetResult(afloat64, bfloat64)(float64, error) {
if b == 0 {
return 0, fmt.Errorf("除数不能为0")
}
return a / b, nil
}
源码以及测试源码下载地址: https://github.com/h1z3y3/big-talk-go-design-patterns/tree/master/00_simple_factory
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 设计模式——订阅模式(观察者模式)
- 设计模式-简单工厂、工厂方法模式、抽象工厂模式
- java23种设计模式-门面模式(外观模式)
- 设计模式-享元设计模式
- Java 设计模式之工厂方法模式与抽象工厂模式
- JAVA设计模式之模板方法模式和建造者模式
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
点击的奥秘:运用说服心理术提升在线影响力(全彩)
Nathalie Nahai(娜塔莉.纳海) / 陈旭 / 电子工业出版社 / 2014-9-1 / 75.00元
用户的每一次点击,不管是在虚拟商店购物,还是在浏览企业网站,或是漫无目的地把玩手机,都蕴藏着基于心理学的无穷奥秘。《点击的奥秘:运用说服心理术提升在线影响力》作者为全球知名的网络心理学家,其在《点击的奥秘:运用说服心理术提升在线影响力》中将心理学、神经科学及行为经济学巧妙地结合在一起,挖掘和提炼出一套行之有效的网络用户引导策略——既涵盖在线说服最新研究动向,也包括最前沿的科技成果,以及其他诸多惊人......一起来看看 《点击的奥秘:运用说服心理术提升在线影响力(全彩)》 这本书的介绍吧!