一、定义
将一个事物的两个维度分离,使其都可以独立的变化。
二、角色
1.抽象 (abstraction)
2.细化抽象 (refined abstraction)
3.实现者 (abstraction)
4.具体实现者 (abstraction)
三、应用场景
当事物有两个维度上的表现,两个维度都可能扩展时
四、优点
1.抽象和实现相分离
2.优秀的扩展能力
五、示例
"""
时间:
作者: Shang ping jian
更改记录:
重要说明:
"""
from abc import ABCMeta, abstractmethod
class Shape(metaclass=ABCMeta):
def __init__(self, color):
self.color = color
@abstractmethod
def draw(self):
pass
class Color(metaclass=ABCMeta):
@abstractmethod
def paint(self, shape):
pass
class Circle(Shape):
name = "circle"
def draw(self):
self.color.paint(self)
class Red(Color):
def paint(self, shape):
print("red %s" % shape.name)
red_circle = Circle(Red())
red_circle.draw()