代码之家  ›  专栏  ›  技术社区  ›  Len Tango Ben

在抽象的“工厂”C中转换继承的类#

  •  1
  • Len Tango Ben  · 技术社区  · 16 年前

    我有一个抽象类叫做BaseDevice。 例如信标,它有基类方法和自己的方法 属性 . 比方说,这些设备之间的区别是一个有两个LED,一个有一个LCD

    目前它不可能使一个设备应答器以及信标(或者我必须复制粘贴到一个新的类,这是不想要的)。

    比如说, 我仍然需要能够看到什么设备在我的设备列表“他有一个(或多个)LED的”

    结语:我想把我的“是一个”变成“有一个”(就像四人帮推荐的那样)。

    工厂设计模式 看起来很复杂。在这种情况下,这是一个好的解决方案吗?

    2 回复  |  直到 16 年前
        1
  •  1
  •   Community Mohan Dere    6 年前

    对我来说这听起来像是你需要一个 Decorator .

    在面向对象编程中,decorator模式是一种设计模式,允许动态地向现有对象添加新的/附加的行为。

    decorator模式是子类化的替代方法。子类化增加了编译时的行为,并且更改会影响原始类的所有实例;装饰可以在运行时为单个对象提供新的行为。

    对您来说,棘手的部分是为所有子类定义一个公共接口。如果这是不可能的,你不能使用你的对象多态无论如何。

        2
  •  1
  •   derdo    16 年前

    这样你就可以 List<LED> 现场和 Add(LED newLed) 可以在混凝土构件上使用的方法。本质上这是一种“有”的关系。你可以有另一个液晶的类,现在你可以混合和匹配这些东西,你喜欢在你的具体类。