【发布时间】:2020-02-21 23:20:18
【问题描述】:
我有一个名为 IDataStream 的抽象类,它有一个方法。我为这个名为 IMUDataStream、GPSDataStream 的抽象类创建了两个实现。将来我可能会添加另一个 IDataStream 抽象类的实现。我有另一个名为 DataVisualizer 的类,它可视化由不同 DataStream 类提取的所有数据。
将来如果我添加另一个 IDataStream 抽象类的 DataStream 实现,我不应该修改 DataVisualizer 类来可视化数据。有没有办法创建 IDataStream 类的所有派生类的对象,将其添加到列表中并遍历列表并使用它来调用将为我提供数据的方法?
请注意,我是 python 和设计模式的新手。努力学习。这可能是一个完全愚蠢的问题和完全的疯狂。我实际上对此有要求。如果这可以通过设计模式实现,我请求读者指出我的材料。非常感谢帮助。谢谢!
#!/usr/bin/env python3
from abc import ABC, abstractmethod
class IDataStream(ABC):
def get_data(self):
pass
class IMUDataStream(IDataStream):
def __init__(self):
self.__text = "this is IMU data"
def get_data(self):
print(self.__text)
class GPSDataStream(IDataStream):
def __init__(self):
self.__text = "this is GPS data"
def get_data(self):
print(self.__text)
class DataVisualizer:
def __init__(self):
# somehow create objects of all derived classes of IDataStream here and call the get_data() function
# even if I add another derived class in the future. I should not be modifying the code here
【问题讨论】:
-
听起来您正在寻找工厂模式。我建议你研究一下。
标签: python python-3.x oop design-patterns