



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第分析Go語言接口的設(shè)計原則目錄一、前言二、開閉原則三、依賴倒置原則3.1、什么是依賴倒置原則3.2、一個耦合度極高的模塊關(guān)系設(shè)計3.3、面向抽象層依賴倒轉(zhuǎn)
一、前言
go的interface寫起來更自由,無需顯示的實現(xiàn),只要實現(xiàn)了與interfece所包含的所有函數(shù)簽名的相同的方法即可。讓編碼更靈活,易擴展。
如何理解go語言中的interface呢
1.interface是方法聲明的集合
2.接口的方法與實現(xiàn)接口的類型方法格式一致
3.接口中所有方法均被實現(xiàn)
4.interface可以作為一種數(shù)據(jù)類型,實現(xiàn)了該接口的任何對象都可以給對應(yīng)的接口類型變量賦值
特別說明兩點:
interface可以被任意對象實現(xiàn),一個類型/對象也可以實現(xiàn)多個interface
方法不能重載,如eat(),eat(sstring)不能同時存在
那么作為interface數(shù)據(jù)類型,他存在的意義在哪呢?實際上是為了滿足一些面向?qū)ο蟮木幊趟枷?。我們知道,軟件設(shè)計的最高目標就是高內(nèi)聚,低耦合。那么其中有一個設(shè)計原則叫開閉原則。什么是開閉原則
二、開閉原則
在面向?qū)ο缶幊填I(lǐng)域中,開閉原則規(guī)定“軟件中的對象(類,模塊,函數(shù)等等)應(yīng)該對于擴展是開放的,但是對于修改是封閉的”,這意味著一個實體是允許在不改變它的源代碼的前提下變更它的行為。
看重點:對于擴展是開放的,對于修改是封閉的.
舉個例子:銀行每天要辦理不同的業(yè)務(wù),存款,轉(zhuǎn)賬,取款等.如果直接是實體來實現(xiàn)如下
packagebank
import"fmt"
typeBankerstruct{
func(b*Banker)Save(){
fmt.Println("存錢")
func(b*Banker)Transfer(){
fmt.Println("轉(zhuǎn)賬")
func(b*Banker)Get(){
fmt.Println("取錢")
}
有個人要來存錢取錢轉(zhuǎn)賬了
packagemain
import"aaa/bank"
funcmain(){
varb=bank.Banker{}
b.Save()
b.Get()
b.Transfer()
}
那么隨著業(yè)務(wù)越來越多,越來越大.我又要新增加一些業(yè)務(wù),比如基金,股票.然后越來越多,越來越大.導(dǎo)致Banker這個模塊越來越臃腫
這樣的設(shè)計會導(dǎo)致,當(dāng)我們?nèi)ソoBanker添加新的業(yè)務(wù)的時候,會直接修改原有的Banker代碼,那么Banker模塊的功能會越來越多,出現(xiàn)問題的幾率也就越來越大,假如此時Banker已經(jīng)有99個業(yè)務(wù)了,現(xiàn)在我們要添加第100個業(yè)務(wù),可能由于一次的不小心,導(dǎo)致之前99個業(yè)務(wù)也一起崩潰,因為所有的業(yè)務(wù)都在一個Banker類里,他們的耦合度太高,Banker的職責(zé)也不夠單一,代碼的維護成本隨著業(yè)務(wù)的復(fù)雜正比成倍增大。
我們使用開閉原則,使用interface將banker模塊抽象出來.然后根據(jù)這個抽象的模塊,去實現(xiàn)save,get,transfer.....
那么依然可以搞定程序的需求。然后,當(dāng)我們想要給Banker添加額外功能的時候,之前我們是直接修改Banker的內(nèi)容,現(xiàn)在我們可以單獨定義一個股票Banker(實現(xiàn)股票方法),到這個系統(tǒng)中。而且股票Banker的實現(xiàn)成功或者失敗都不會影響之前的穩(wěn)定系統(tǒng),他很單一,而且獨立。
所以以上,當(dāng)我們給一個系統(tǒng)添加一個功能的時候,不是通過修改代碼,而是通過增添代碼來完成,那么就是開閉原則的核心思想了。所以要想滿足上面的要求,是一定需要interface來提供一層抽象的接口的。
golang代碼實現(xiàn)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年護士臨床技能測試試題及答案
- 精準備考2025年文化概論試題及答案
- 提升記憶力的學(xué)習(xí)策略執(zhí)業(yè)醫(yī)師考試試題及答案
- 行政管理中中華文化的核心價值試題及答案
- 中國文化概論與環(huán)境保護的關(guān)系試題及答案
- 藥品管理法對藥師考試的影響試題及答案
- 行政管理2025年研究方法試題及答案
- 2025年自考行政管理社會服務(wù)創(chuàng)新試題答案
- 正確認識執(zhí)業(yè)藥師的考試試題及答案
- 2025年執(zhí)業(yè)藥師的綜合素質(zhì)培養(yǎng)試題及答案
- 2024高考有機專題真題
- 2024旋轉(zhuǎn)電機繞組絕緣第2部分:定子繞組絕緣在線局部放電測量
- TD/T 1068-2022 國土空間生態(tài)保護修復(fù)工程實施方案編制規(guī)程(正式版)
- DZ∕T 0382-2021 固體礦產(chǎn)勘查地質(zhì)填圖規(guī)范(正式版)
- 《研學(xué)旅行課程設(shè)計》課件-研學(xué)課程方案設(shè)計
- 小兒補液的基礎(chǔ)與臨床課件
- GB/T 9442-2024鑄造用硅砂
- 戲劇之美(山東聯(lián)盟)智慧樹知到期末考試答案2024年
- 國內(nèi)信用證基礎(chǔ)知識培訓(xùn)
- 礦山救護工考試:礦山救護規(guī)程題庫考試題
- 建筑工地安全文明施工
評論
0/150
提交評論