成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SOLID:開閉原則Go代碼實戰

開發 前端
我們將所有的驗證方法放到一個切片里面存儲,然后在統一的地方遍歷選擇合適的認證方式。這樣改動后,如果新增一個校驗方式,我們只需要注冊到 providers 這個切片就可以了。從而避免修改原有的代碼。總之,開閉原則就允許我們在不修改之前代碼的前提下安全的擴展我們的程序。

一個軟件實體,如類、模塊和函數應該對擴展開放,對修改關閉。 簡單地說:就是當別人要修改軟件功能的時候,使得他不能修改我們原有代碼,只能新增代碼實現軟件功能修改的目的。

作為程序員先上代碼,比如我們想實現一個權限校驗的功能。我們可能這樣寫:

type PermissionChecker struct {
}

func (c *PermissionChecker) HasPermission(ctx *gin.Context, name string) bool {
var permissions []string
switch ctx.GetString("authType") {
case "jwt":
permissions = c.extractPermissionsFromJwt(ctx.Request.Header)
case "basic":
permissions = c.getPermissionsForBasicAuth(ctx.Request.Header)
case "applicationKey":
permissions = c.getPermissionsForApplicationKey(ctx.Query("applicationKey"))
}

}

上面的方法,基于用于的認證方式 jwt、basic 或者 applicationKey ,然后分別去做權限的校驗。感覺也沒有啥問題,常規操作。

但如果我們此時想擴展一下,新增一個校驗,就必須改動這里的代碼。于是利用開閉原則,我們改一下代碼:

type PermissionChecker struct {
providers []PermissionProvider
}

func (c *PermissionChecker) HasPermission(ctx *gin.Context, name string) bool {
var permissions []string
for _, provider := range c.providers {
if ctx.GetString("authType") != provider.Type() {
continue
}

permissions = provider.GetPermissions(ctx)
break
}
}

我們將所有的驗證方法放到一個切片里面存儲,然后在統一的地方遍歷選擇合適的認證方式。

這樣改動后,如果新增一個校驗方式,我們只需要注冊到 providers 這個切片就可以了。從而避免修改原有的代碼。

總之,開閉原則就允許我們在不修改之前代碼的前提下安全的擴展我們的程序。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2017-10-24 15:28:27

PHP代碼簡潔SOLID原則

2011-07-04 17:59:03

開閉原則

2025-06-10 10:05:00

GoSOLID代碼

2020-05-14 09:15:52

設計模式SOLID 原則JS

2012-03-15 11:15:13

Java設計模式

2022-07-15 09:01:15

React對象編程

2021-02-11 08:59:37

SOLID模塊倒置原則

2024-09-30 11:51:07

2022-03-24 09:44:54

TypeScriptSOLID

2011-09-01 11:27:27

數據庫調整開閉原則

2023-10-09 18:52:14

SOLIDJava

2024-07-11 16:32:13

代碼Java

2024-12-09 08:18:33

2025-04-28 01:55:00

工具sqlmockSQL

2024-02-23 09:31:30

開閉原則架構業務

2014-07-21 09:22:40

GoAPI

2024-12-05 09:13:55

Go項目模塊

2025-05-12 00:55:34

2025-05-15 09:05:19

Go項目BDD測試

2011-12-02 10:19:24

CSS
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天干夜夜操 | 亚洲精品国产精品国自产在线 | 国产一区二区激情视频 | 91精品国产色综合久久 | 欧美一二三四成人免费视频 | 色综合久久久久 | 成人在线观看黄 | 日韩亚洲欧美一区 | 免费黄色av网站 | 999国产精品视频 | 中文字幕一区二区三区四区五区 | 99精品视频在线观看免费播放 | 国产精品日韩欧美一区二区 | 欧美video | 国产精品国产a级 | 欧美男男videos| 免费在线国产视频 | 日韩激情免费 | 日本天堂一区 | 国产精品久久 | 国产乱码精品一区二区三区中文 | 麻豆精品一区二区三区在线观看 | 日本久久久一区二区三区 | 国产一区二区三区在线看 | av毛片免费| 国产精品一区二区不卡 | 一区二区中文 | 亚洲精品日韩欧美 | 欧美一区二区在线 | 国产精品毛片一区二区三区 | 欧美一区二区三区在线观看 | 欧美一级观看 | 一区二区三区在线 | 日韩久久久久 | 天天拍夜夜爽 | 日韩欧美综合 | 欧美专区在线 | 色婷婷av一区二区三区软件 | 特一级黄色毛片 | 亚洲国产一区二区三区在线观看 | 国产一区二区三区四区 |