Veinte, el ejemplo de aplicación de una interfaz (escena facilitar el uso de la comprensión)

plataforma de servidor de información turbia o de funcionamiento en diferentes plataformas es el mismo pero diferentes plataformas pueden utilizar la interfaz de hacer

package main

import (
	"fmt"
)

type Cloud interface {
	GetHost() []Host
	Start(id string) error
	Stop(id string) error
	Detil(id string) error
}

type Host struct {
	name string
	ip string
}

type AliCloud struct {
	api string
	key string
	secret string
}

type TenCloud struct {
	api string
	key string
	secret string
}

func NewAliCloud(api,key,secret string) AliCloud {
	return AliCloud{api,key,secret}
}

func NewTenCloud(api,key,secret string) TenCloud {
	return  TenCloud{api,key,secret}
}


func (a AliCloud) GetHost() []Host{
	fmt.Println("Ali GetHost")
	return []Host{}
}

func (a AliCloud) Start(id string) error{
	fmt.Println("Ali Start")
	return  nil
}

func (a AliCloud) Stop(id string) error{
	fmt.Println("Ali Stop")
	return  nil
}

func (a AliCloud) Detil(id string) error{
	fmt.Println("Ali Detil")
	return  nil
}

func (a TenCloud) GetHost() []Host{
	fmt.Println("Ten GetHost")
	return []Host{}
}

func (a TenCloud) Start(id string) error{
	fmt.Println("Ten Start")
	return  nil
}

func (a TenCloud) Stop(id string) error{
	fmt.Println("Ten Stop")
	return  nil
}

func (a TenCloud) Detil(id string) error{
	fmt.Println("Ten Detil")
	return  nil
}

func GetCloud(cloudtype string) Cloud {
	var cloud Cloud
	if cloudtype == "ten" {
		cloud =   NewTenCloud("a","b","c")
	}else if cloudtype == "ali" {
		cloud =   NewAliCloud("a","b","c")
	}else {
		fmt.Println("err")
	}
	return  cloud
}



func main() {
	cloud := GetCloud("ten")
END:
	for {
		//多云平台就会用到接口  同种操作针对不同类型 可以复用
		var operator string
		fmt.Print("请输入操作:")
		fmt.Scan(&operator)
		switch operator {
		case "1":
			cloud.GetHost()
		case "2":
			cloud.Start("1")
		case "3":
			cloud.Stop("2")
		case "4":
			cloud.Detil("3")
		case "5":
			break END
		}
	}
}
Publicados 119 artículos originales · alabanza ganado 13 · vistas 7145

Supongo que te gusta

Origin blog.csdn.net/weixin_45413603/article/details/105009076
Recomendado
Clasificación