回覆列表
  • 1 # 搬磚程式設計師

    在做web開發和程式設計的過程中,我經常會遇到一個問題,就是更改引數,開始的時候,我經常就在一個方法或者函式中直接將這個引數給傳進去。

    但是,一到要更改引數的時候,我就很煩,總要替換啥的,於是乎,慢慢的就習慣建一個配置檔案的習慣了,我們需要去用到的直接在配置檔案裡面取就行,修改也很方便。

    在做web開發的時候,見的比較多的要修改路由的情況,其實,跟上面的類似。不過python裡面的解決方法略有區別。

  • 2 # 程式你好

    一般方法的引數很有可能會發生變化,有可能會增加一個或幾個引數,這樣方法就會不停的改,相應的,程式中所有呼叫這個方法的程式碼也必須跟著修改。如果這個方法在很多地方都被呼叫,那麼修改這些程式碼真是個繁瑣的工作。

    用介面或抽象類的好處就是,即使增加或減少幾個引數,這個介面或抽象類不用去修改,這樣這個方法的簽名不會發生變化,所以程式中呼叫此方法的程式碼也不用修改。只修改這個介面或抽象類的實現的類即可。

    比如說查詢某個使用者的訂單:

    我們宣告這樣一個方法

    List<Order> GetOrders(string userId)

    {

    。。。。。

    }

    呼叫的程式碼可能是這樣:

    string userId = "1111"

    var orders = ***.GetOrders(userId);

    .....

    假如現在需求是透過使用者的名字或地址查詢訂單,則需要修改方法:

    List<Order> GetOrders(string userId,string userName,string address)

    相應的呼叫程式碼也必須修改成:var orders = ***.GetOrders(userId,userName,address);

    如果我們開始方法定義成:

    List<Order> GetOrders(IUser user)

    {

    。。。。。

    }

    呼叫的程式碼應該是這樣:

    IUser user = GetCurrentUser()

    var orders = ***.GetOrders(user);

    對IUser介面,可實現不同的User類,比如GuessUser,AdminUser,NormalUser等。

    使用的程式碼幾乎不用改。

    IUser user = GetGuessUser()//GetAdminUser()等等

    var orders = ***.GetOrders(user);

    上面那句話說的應該就是這個意思了。

  • 中秋節和大豐收的關聯?
  • 能喝紅蘿蔔玉米豬骨頭嗎?