from abc import ABCMeta, abstractmethod
"""
桥接模式:将抽象与实现解耦,使得他们可以毒力的变化
桥接模式关注的是抽象和实现的分离,使得它们可以独立发展;
桥接模式是结构性模式,侧重于软件结构。而策略模式关注的是对算法、规则的封装,
使得算法可以独立于使用它的用户而变化;策略模式是行为模式,侧重于对象行为。
"""
class Shape(metaclass=ABCMeta):
"""形状"""
def __init__(self, color):
self._color = color
@abstractmethod
def getShapeType(self):
pass
def getShapeInfo(self):
return self._color.getColor() + "的" + self.getShapeType()
class Rectange(Shape):
"""矩形"""
def __init__(self, color):
super().__init__(color)
def getShapeType(self):
return "矩形"
class Ellipse(Shape):
"""椭圆"""
def __init__(self, color):
super().__init__(color)
def getShapeType(self):
return "椭圆"
class Color(metaclass=ABCMeta):
@abstractmethod
def getColor(self):
pass
class Red(Color):
"""红色"""
def getColor(self):
return "红色"
class Green(Color):
"""绿色"""
def getColor(self):
return "绿色"
def testShape():
redRect = Rectange(Red())
print(redRect.getShapeInfo())
greenRect = Rectange(Green())
print(greenRect.getShapeInfo())
if __name__ == "__main__":
testShape()