最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

舉例講解Python中的Null模式與橋接模式編程

 更新時間:2016年02月02日 16:57:21   作者:dongweiming  
這篇文章主要介紹了Python中的Null模式與橋接模式編程,Null模式與橋接模式都屬于Python的設計模式編程,需要的朋友可以參考下

Null模式
我想每個人都有一種經(jīng)歷,為了獲取某屬性,但是有時候?qū)傩允荖one,那么需要你做異常處理, 而假如你想節(jié)省這樣的條件過濾的代碼,可以使用Null模式以減少對象是否為None的判斷

python的例子
我舉個不是很通用的例子,只是為了讓大家理解這個模式:我有很多類, 但是不是每個類都有類方法test,所以我調(diào)用類方法就要做個異常處理,類似這樣

class A(object):
  pass

class B(object):
  b = 1
  @classmethod
  def test(cls):
    print cls.b

def get_test(x):
  try:
    return x.test
  except AttributeError: 
    return None

# 我這里只寫了2個類,但是其實有很多類
for i in [A, B]:
  test = get_test(i)
  # 我要判斷以下是否獲得了這個類方法才能決定是否可以執(zhí)行
  if test:
    test()

但是我用Null方法就可以這樣

class Null(object):

  def __init__(self, *args, **kwargs):
    "忽略參數(shù)"
    return None

  def __call__(self, *args, **kwargs):
    "忽略實例調(diào)用"
    return self

  def __getattr__(self, mname):
    "忽略屬性獲得"
    return self

  def __setattr__(self, name, value):
    "忽略設置屬性操作"
    return self

  def __delattr__(self, name):
    '''忽略刪除屬性操作'''
    return self

  def __repr__(self):
    return "<Null>"

  def __str__(self):
    return "Null"

還是上面的功能

class Null(object):

  def __init__(self, *args, **kwargs):
    "忽略參數(shù)"
    return None

  def __call__(self, *args, **kwargs):
    "忽略實例調(diào)用"
    return self

  def __getattr__(self, mname):
    "忽略屬性獲得"
    return self

  def __setattr__(self, name, value):
    "忽略設置屬性操作"
    return self

  def __delattr__(self, name):
    '''忽略刪除屬性操作'''
    return self

  def __repr__(self):
    return "<Null>"

  def __str__(self):
    return "Null"

橋接模式
這個模式其實就是把產(chǎn)品類的實現(xiàn)和抽象類分離,能夠靈活的變化,假如你記得狀態(tài)模式,它是修改內(nèi)部屬性, 而橋接模式是指定好內(nèi)部屬性,每個產(chǎn)品類指定這個屬性被橋接模式類調(diào)用,適用于產(chǎn)品類可能經(jīng)常調(diào)整變化,這樣還能減少了產(chǎn)品類之間的耦合

python的例子
這里實現(xiàn)一個打印操作系統(tǒng)名字的功能

class Bridge(object):

  def __init__(self):
    self.__implementation = None

  def someFunctionality(self):
    raise NotImplemented()

class UseCase1(Bridge):
  # 根據(jù)初始化參數(shù)傳入實現(xiàn)的產(chǎn)品類
  def __init__(self, implementation):
    self.__implementation = implementation
  # 根據(jù)傳入的產(chǎn)品類的屬性打印結(jié)果
  def someFunctionality(self):
    print "UseCase1: ",
    self.__implementation.anotherFunctionality()


class UseCase2(Bridge):
  def __init__(self, implementation):
    self.__implementation = implementation

  def someFunctionality(self):
    print "UseCase2: ",
    self.__implementation.anotherFunctionality()


class ImplementationInterface:

  def anotherFunctionality(self):
    raise NotImplemented

# 這里其實才是實現(xiàn)的產(chǎn)品類
class Linux(ImplementationInterface):

  # 它定義了這個方法,回應操作系統(tǒng)的名字
  def anotherFunctionality(self):
    print "Linux!"


class Windows(ImplementationInterface):
  def anotherFunctionality(self):
    print "Windows."


def main():
  linux = Linux()
  windows = Windows()

  useCase = UseCase1(linux)
  useCase.someFunctionality()

  useCase = UseCase1(windows)
  useCase.someFunctionality()

  useCase = UseCase2(linux)
  useCase.someFunctionality()

  useCase = UseCase2(windows)
  useCase.someFunctionality()


if __name__ == "__main__":
  main()

相關文章

  • Python實現(xiàn)針對給定單鏈表刪除指定節(jié)點的方法

    Python實現(xiàn)針對給定單鏈表刪除指定節(jié)點的方法

    這篇文章主要介紹了Python實現(xiàn)針對給定單鏈表刪除指定節(jié)點的方法,結(jié)合實例形式分析了Python單鏈表的定義、節(jié)點添加、刪除、打印等相關操作技巧,需要的朋友可以參考下
    2018-04-04
  • 解決pyinstaller打包運行程序時出現(xiàn)缺少plotly庫問題

    解決pyinstaller打包運行程序時出現(xiàn)缺少plotly庫問題

    這篇文章主要介紹了解決pyinstaller打包運行程序時出現(xiàn)缺少plotly庫問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • python閉包和裝飾器你了解嗎

    python閉包和裝飾器你了解嗎

    這篇文章主要為大家詳細介紹了Python的閉包和裝飾器,何為閉包?何為裝飾器?感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-08-08
  • Python蓄水池算法的應用案例與代碼詳解

    Python蓄水池算法的應用案例與代碼詳解

    蓄水池算法(Reservoir Sampling)是一種用于處理大規(guī)模數(shù)據(jù)流的隨機抽樣算法,該算法能夠在不知道數(shù)據(jù)流大小的情況下,從數(shù)據(jù)流中均勻隨機地抽取固定大小的樣本,本文給大家介紹了一個詳細的Python蓄水池算法的實現(xiàn),包括完整的代碼示例,需要的朋友可以參考下
    2024-11-11
  • python實現(xiàn)狄克斯特拉算法

    python實現(xiàn)狄克斯特拉算法

    這篇文章主要介紹了python實現(xiàn)狄克斯特拉算法。想了解數(shù)據(jù)結(jié)構和算法朋友可以參考下
    2021-04-04
  • 使用python實現(xiàn)數(shù)據(jù)篩查

    使用python實現(xiàn)數(shù)據(jù)篩查

    一般數(shù)據(jù)篩查可以通過Python中的pandas庫來實現(xiàn),下面小編就來為大家介紹一下Python如何利用pandas實現(xiàn)數(shù)據(jù)篩查,感興趣的小伙伴可以一起學習一下
    2023-10-10
  • Python socket模塊實現(xiàn)的udp通信功能示例

    Python socket模塊實現(xiàn)的udp通信功能示例

    這篇文章主要介紹了Python socket模塊實現(xiàn)的udp通信功能,結(jié)合具體實例形式分析了Python使用socket模塊實現(xiàn)UDP通信客戶端與服務器端相關實現(xiàn)技巧,需要的朋友可以參考下
    2019-04-04
  • python3 簡單實現(xiàn)組合設計模式

    python3 簡單實現(xiàn)組合設計模式

    這篇文章主要介紹了python3 簡單實現(xiàn)組合設計模式的方法,文中示例代碼非常詳細,幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • np.concatenate()函數(shù)數(shù)組序列參數(shù)的實現(xiàn)

    np.concatenate()函數(shù)數(shù)組序列參數(shù)的實現(xiàn)

    本文主要介紹了np.concatenate()函數(shù)數(shù)組序列參數(shù)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • OpenCV根據(jù)面積篩選連通域?qū)W習示例

    OpenCV根據(jù)面積篩選連通域?qū)W習示例

    這篇文章主要為大家介紹了OpenCV根據(jù)面積篩選連通域?qū)W習示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06

最新評論

乐亭县| 开化县| 宣威市| 资溪县| 射阳县| 黑龙江省| 邢台市| 信宜市| 和顺县| 垦利县| 昌图县| 神农架林区| 建始县| 晴隆县| 太原市| 高密市| 徐州市| 分宜县| 黑龙江省| 三门峡市| 渝北区| 马山县| 揭东县| 秦安县| 伊吾县| 丰都县| 颍上县| 大化| 双牌县| 闽侯县| 广宁县| 苏尼特左旗| 肥城市| 康定县| 临江市| 龙川县| 普陀区| 措美县| 塘沽区| 镇江市| 如东县|