Python設計模式之橋接模式

2021-09-06 21:46:01 字數 1118 閱讀 2307

橋接模式學習鏈結

#!/usr/bin/python

# coding:utf8

"""橋接模式

"""# 具體實現者1/2

class drawingapi1(object):

def draw_circle(self, x, y, radius):

print('api1.circle at {}:{} 半徑 {}'.format(x, y, radius))

# 具體實現者2/2

class drawingapi2(object):

def draw_circle(self, x, y, radius):

print('api2.circle at {}:{} 半徑 {}'.format(x, y, radius))

# 優雅的抽象

class circleshape(object):

def __init__(self, x, y, radius, drawing_api):

self._x = x

self._y = y

self._radius = radius

self._drawing_api = drawing_api

# 低層次的,即具體的的實現

def draw(self):

self._drawing_api.draw_circle(self._x, self._y, self._radius)

# 高層次的抽象

def scale(self, pct):

self._radius *= pct

def main():

shapes = (

circleshape(1, 2, 3, drawingapi1()),

circleshape(5, 7, 11, drawingapi2())

)for shape in shapes:

'''座標--縮放變換'''

shape.scale(2.5)

shape.draw()

if __name__ == '__main__':

main()

這些就是把不變的抽出來,把變動的單獨包裝一下,這樣就可以單獨處理

設計模式之橋接模式

public class test 兩個維度 乙個是具體產品,如狗 豬 乙個是抽象產品,如溫順的動物 冷酷的動物 排列組合 如溫順的狗 冷酷的豬等 abstract class animal 該橋接類的引入是關鍵 abstract class animalbridge extends animal ...

設計模式之 橋接模式

今天來學習橋接模式,在我們日常生活中,有很多的事物是可以 多維度 的變化的,比如我們去吃麵條,有雞絲面和牛肉麵兩種,每一種面又分為辣味的和不辣的,而且每種面可能會分為大碗小碗的。很多事物能夠變化的維度不止一種,甚至數十種,那麼我們在 上怎麼應對這些變化呢?每乙個都單獨弄乙個類顯然不是什麼好辦法。那麼...

設計模式之橋接模式

在軟體系統中,某些型別由於自身的邏輯,它具有兩個或多個維度的變化,那麼如何應對這種 多維度的變化 如何利用物件導向的技術來使得該型別能夠輕鬆的沿著多個方向進行變化,而又不引入額外的複雜度?這就要使用橋接模式。現在有咖啡,按大小分可以分為中杯和大杯,按型別可以分為拿鐵和摩卡,所以現在總共有四中咖啡,中...