vue學習---條件渲染
阿新 • • 發佈:2021-11-14
轉載自:https://www.cnblogs.com/xiaoyuanqujing/articles/11728016.html
1橋接模式
橋樑模式又叫橋接模式,定義如下:將抽象與實現解耦(注意此處的抽象和實現,並非抽象類和實現類的那種關係,而是一種角色的關係,這裡需要好好區分一下),可以使其獨立變化。在形如上例中,Pen只負責畫,但沒有形狀,它終究是不知道要畫什麼的,所以我們把它叫做抽象化角色;而Shape是具體的形狀,我們把它叫做實現化角色。抽象化角色和實現化角色是解耦的,這也就意味著,所謂的橋,就是抽象化角色的抽象類和實現化角色的抽象類之間的引用關係。
class DrawingAPI1: def draw_circle(self, x, y, radius): print("API1.circle at {} : {} ,radius:{}".format(x, y, radius)) class DrawingAPI2: def draw_circle(self,x,y,radius): print("API2.cirle at {} : {} ,radius:{}".format(x, y, radius)) class CircleShape: 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): # scale 規模 self._radius *= pct # pct 百分比 def main(): shapes = ( CircleShape(1,2,3,DrawingAPI1()), CircleShape(5,7,11,DrawingAPI2()), ) # 提供2個 for shape in shapes: shape.scale(2.5) shape.draw() main() ''' API1.circle at 1 : 2 ,radius:7.5 API2.circle at 5 : 7 ,radius:27.5 '''
2橋樑模式的優點和應用場景
優點:
1、抽象角色與實現角色相分離,二者可以獨立設計,不受約束;
2、擴充套件性強:抽象角色和實現角色可以非常靈活地擴充套件。
應用場景:
1、不適用繼承或者原繼承關係中抽象類可能頻繁變動的情況,可以將原類進行拆分,拆成實現化角色和抽象化角色。例如本例中,若將形狀、粗細、繪畫樣式等屬於彙集在一個類中,一旦抽象類中有所變動,將造成巨大的風險;
2、重用性比較大的場景。比如開關控制邏輯的程式,開關就是抽象化角色,開關的形式有很多種,操作的實現化角色也有很多種,採用橋樑模式,(如當前例子)開關即可進行復用,整體會將設計的粒度減小。