Introduction to VPS and Web Technology Development

go设计模式实现(单例模式,工厂模式,接口,多态)

自由vps golang
package main

import "fmt"

//定义接口
type Opter interface {
//方法声明
Result() int
}

//父类
type Operate struct {
num1 int
num2 int
}

//加法子类
type Add struct {
Operate
}

//减法子类
type Sub struct {
Operate
}

//乘法子类
type Mlt struct {
Operate
}

//工厂类
type Factory struct {
}

//加法子类的方法
func (a *Add) Result() int {
return a.num1 + a.num2
}

//减法子类的方法
func (s *Sub) Result() int {
return s.num1 - s.num2
}

//乘法子类的方法
func (m *Mlt) Result() int {
return m.num1 * m.num2
}

//多态实现
func Result(o Opter) {
value := o.Result()
fmt.Println(value)
}
func (f *Factory) Result(num1 int, num2 int, ch string) {
switch ch {
case "+":
var a Add
a.num1 = num1
a.num2 = num2
Result(&a)
case "-":
var s Sub
s.num1 = num1
s.num2 = num2
Result(&s)
case "*":
var m Mlt
m.num1 = num1
m.num2 = num2
Result(&m)
}
}

//通过设计模式调用
func main() {
//创建工厂对象
var f Factory
f.Result(10, 20, "*")
}

//多态调用
func main0203() {
//var a Add = Add{Operate{10, 20}}
var s Sub = Sub{Operate{10, 20}}
Result(&s)
}

//接口调用
func main0202() {
var o Opter
var a Add = Add{Operate{10, 20}}

o = &a
value := o.Result()
fmt.Println(value)

}

//方法调用
func main0201() {
//创建加法对象
//var a Add
//a.num1 = 10
//a.num2 = 20
//v := a.Result()
//fmt.Println(v)

//创建减法对象
var s Sub
s.num1 = 10
s.num2 = 20
v := s.Result()
fmt.Println(v)
}
使用chatGPT寻求答案
标签: 暂无标签

免责声明:

本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信E-mail:master@freevpsweb.com

同类推荐
评论列表