package main
import "fmt"
//定义接口
type Opter interface {
Result() int
}
//父类
type Operate struct {
n1 int
n2 int
}
//加法子类
type Add struct {
Operate
}
//减法子类
type Sub struct {
Operate
}
//乘法子类
type Mul struct {
Operate
}
//除法子类
type Div struct {
Operate
}
//工厂类
type Factory struct {
}
//工厂方法
//func (f *Factory)CreateFactory(n1 int, n2 int, ch string) int
func CreateFactory(n1 int, n2 int, ch string) int {
//接口定义
var o Opter
switch ch {
case "+":
a := Add{Operate{n1, n2}}
o = &a
case "-":
s := Sub{Operate{n1, n2}}
o = &s
case "*":
m := Mul{Operate{n1, n2}}
o = &m
case "/":
d := Div{Operate{n1, n2}}
o = &d
}
//调用多态
//return Result(o)
return o.Result()
}
//加法子类方法
func (a *Add) Result() int {
return a.n1 + a.n2
}
//减法子类方法
func (s *Sub) Result() int {
return s.n1 - s.n2
}
//乘法子类方法
func (m *Mul) Result() int {
return m.n1 * m.n2
}
//除法子类方法
func (d *Div) Result() int {
//除法中 除数不能为0
return d.n1 / d.n2
}
//多态实现
func Result(o Opter) int {
value := o.Result()
return value
}
//面向对象实现
func main0201() {
//加法运算
//a := Add{Operate{10, 20}}
//value := a.Result()
//fmt.Println(value)
//减法运算
s := Sub{Operate{10, 20}}
value := s.Result()
fmt.Println(value)
}
//面向接口实现
func main0202() {
//创建加法对象
//a := Add{Operate{10, 20}}
//创建减法对象
s := Sub{Operate{10, 20}}
//定义接口
var o Opter
o = &s
value := o.Result()
fmt.Println(value)
}
//面向多态实现
func main0203() {
//创建加法对象
//a := Add{Operate{10, 20}}
//创建减法对象
//s := Sub{Operate{10, 20}}
//创建乘法对象
m := Mul{Operate{10, 20}}
//调用多态
value := Result(&m)
fmt.Println(value)
}
//面向设计模式实现(工厂设计模式)
//基于面向对象分成三个模块 M (模型)V (视图) C(控制器)
func main() {
//创建工厂对象
//var f Factory
//value := f.CreateFactory(100, 20, "/")
//通过函数实现
value := CreateFactory(100, 20, "/")
fmt.Println(value)
}
四则运算--Go interface
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 按照下面要求,在交互模式中运行,看看得到的结果和用小学数学知识运算之后得到的结果是否一致: >>>2+5 7 >>...
- 在javascript中,带小数的数据运算时总会出现好多位小数.这是因为在javascript中浮点数的计算是以2...