zoukankan      html  css  js  c++  java
  • 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()
    
    }
    
  • 相关阅读:
    Roce ofed 环境搭建与测试
    Ubuntu 1804 搭建NFS服务器
    Redhat 8.0.0 安装与网络配置
    Centos 8.1 安装与网络配置
    SUSE 15.1 系统安装
    VSpare ESXi 7.0 基本使用(模板、iso、SRIOV)
    VSpare ESXi 7.0 服务器安装
    open SUSE leap 15.1 安装图解
    KVM虚拟机网卡连接网桥
    GitHub Action一键部署配置,值得拥有
  • 原文地址:https://www.cnblogs.com/MyUniverse/p/13038976.html
Copyright © 2011-2022 走看看