五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動態(tài)

Go語言基礎(chǔ)設(shè)計模式之策略模式示例詳解

發(fā)布日期:2022-02-01 00:11 | 文章來源:腳本之家

概述

定義一系列算法,將每個算法封裝起來。并讓它們能夠相互替換。策略模式讓算法獨立于使用它的客戶而變化。

針對同一類型問題的多種處理方式

一、不使用策略模式

package main
import "fmt"
type User struct {
	Name string
}
func (this User) travel(t string) {
	switch t {
	case "飛機":
		fmt.Printf("%s,飛機出行\(zhòng)n", this.Name)
	case "火車":
		fmt.Printf("%s,火車出行\(zhòng)n", this.Name)
	case "走路":
		fmt.Printf("%s,走路出行\(zhòng)n", this.Name)
	default:
		fmt.Println("你未選擇了出行方式嗎")
	}
}
func main() {
	User{"張三"}.travel("飛機")
	User{"張三"}.travel("火車")
	User{"張三"}.travel("走路")
	User{"張三"}.travel("")
}

問題:

代碼很多且復(fù)雜,if…else…多,不利于維護和擴展違反了"開閉原則",增加新的出行方式必須修改源碼復(fù)用性差,無法單獨重用其中的某個或某些算法

二、策略模式

生活策略模式例子:

張三從廣東去北京【1.坐飛機,2.坐火車,3.走路】鵝廠推出了3種會員,分別為會員,超級會員、及金牌會員【皮膚不同,折扣不同】諸葛亮的錦囊妙計

策略模式涉及到三個角色:

編號 角色 描述
1 環(huán)境(Context)角色 持有一個Strategy的引用
2 抽象策略(Strategy)角色 這是一個抽象角色,通常由一個接口或抽象類實現(xiàn)。此角色給出所有的具體策略類所需的接口
3 具體策略(ConcreteStrategy)角色 包裝了相關(guān)的算法或行為。

UML

總結(jié)

優(yōu)點:

策略模式提供了對“開閉原則”的完美支持,用戶可以在不修改原有系統(tǒng)的基礎(chǔ)上選擇算法或行為,也可以靈活地-增加新的算法或行為。提供管理相關(guān)的算法族可以替換繼承關(guān)系的辦法。避免使用多重條件轉(zhuǎn)移語句。

缺點:

客戶端必須知道所有的策略類,并自行決定使用哪一個策略類策略模式將造成產(chǎn)生很多策略類,可以通過使用享元模式在一定程度上減少對象的數(shù)量

示例

package main
import "fmt"
/*出行方式*/
type Itravel interface {
	Travel()
}
/*飛機*/
type Aircraft struct{}
/*火車*/
type Train struct{}
/*走路*/
type Walk struct{}
/*具體策略類 1:飛機出行*/
func (this Aircraft) Travel() {
	fmt.Println("飛機出行")
}
/*具體策略類 2:火車出行*/
func (this Train) Travel() {
	fmt.Println("火車出行")
}
/*具體策略類 3:走路出行*/
func (this Walk) Travel() {
	fmt.Println("走路出行")
}
/*環(huán)境類*/
type User struct {
	Name string
	Itravel Itravel
}
func (this User) travel() {
	fmt.Printf("%s", this.Name)
	this.Itravel.Travel()
}
func main() {
	user := User{"張三", Aircraft{}}
	user.travel()
	user = User{"李四", new(Train)}
	user.travel()
	user = User{"王五", &Walk{}}
	user.travel()
}

以上就是Go語言基礎(chǔ)設(shè)計模式之策略模式示例詳解的詳細內(nèi)容,更多關(guān)于Go語言策略模式的資料請關(guān)注本站其它相關(guān)文章!

香港服務(wù)器租用

版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部