golang单一职责原则接口设计例子

golang单一职责原则接口设计

理解:按照职责的方式划分接口,就跟权限管理中,以角色进行分配权限一样

(虽然golang比较偏向于面向过程的语言,但是因为涉及接口的概念,感觉这个接口设计同样使用于golang的接口设计)

package main

import (
	// "errors"
	"log"
)


// IUserBo 只负责用户属性的接口
type IUserBo interface{

	// 获取用户的Id
	GetUserID()

	// 获取用户密码
	GetUserPW()
}
// IUserBiz 只负责用户信息的维护接口
type IUserBiz interface{

	// 添加用户
	AddUser()

	// 删除用户
	RemoveUser()

}

// User 用户属性
type User struct{
	ID string
	PW string
}

// Users 管理用户
var Users = make([]*User,0)


// GetUserID 获取用户ID
func(u *User)GetUserID(){
	log.Println(u.ID)
}


// GetUserPW 获取用户的密码
func(u *User)GetUserPW(){
	log.Println(u.PW)
}


// AddUser 添加用户
func(u *User)AddUser(){
	for _,v := range Users{
		if u.ID == v.ID{
			log.Println("该用户已经存在")
			return
		}
	}
	Users = append(Users,u)
}

// RemoveUser 删除用户
func (u *User)RemoveUser(){

	for i:=0;i<len(Users);i++{
		if(Users[i].ID==u.ID){
			// golang的数组删除元素就是这么的简单
			Users = append(Users[:i],Users[i+1:]...)
		}
	}

	log.Println(Users)
}

func init(){
	log.SetFlags(log.Ldate|log.Lshortfile)
	u1 := &User{"1","11"}
	u2 := &User{"2","12"}
	u3 := &User{"3","13"}
	u4 := &User{"4","14"}
	u5 := &User{"5","15"}
	Users = append(Users,u1,u2,u3,u4,u5)
}



func main(){

	var iso IUserBo

	var isz IUserBiz

	u := &User{"1","11"}

	iso = u

	iso.GetUserID()

	iso.GetUserPW()

	isz = u

	isz.AddUser()

	isz.RemoveUser()

}
posted @ 2020-06-03 17:35  Myuniverse  阅读(362)  评论(0编辑  收藏  举报