design-patterns - 垂头丧气可以吗?

标签 design-patterns oop architecture

我正在设计一个用户可以扩展的框架。 基本上我会为他们提供一组他们可以实现的接口(interface),我的“manager”类将像这样调用他们的实现:

abstract1 = factory.GetConcreteExtension1()
abstract2 = factory.GetConcreteExtension2()
abstract1.DoSomething(abstract2)

我的客户实现抽象的具体版本的地方。 然而,他们可能决定将数据添加到不在abstract2接口(interface)中的concrete2。 这将迫使他们在crete.DoSomething实现中将abstract2向下转换为concrete2。

这看起来像代码味道,因为我强制他们实现一个方法(DoSomething),该方法在其签名中需要abstract1,但实际上只能得到concrete1(加上我强制他们编写强制转换)。

我找不到既能很好地定义契约(Contract)又能允许我的框架自行管理流程的解决方案。有什么想法吗?

最佳答案

因此,使用参数abstract2 调用abstract1 的DoSomething,并且您想从DoSomething 方法获取abstract2 的数据?

在这种情况下,在我看来,最好赋予abstract2行为,以便abstract1通过abstract2的行为而不是通过它的数据与其交互。

关于design-patterns - 垂头丧气可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1033619/

相关文章:

c# - 设计应用程序类

design-patterns - 哪种设计模式可以做到这一点?

oop - 循环依赖是否被认为是糟糕的设计?

c++ - 表示具有 "multiple-combined"键的查找表的数据结构

docker - 如何使用bazel根据架构拉取镜像

python - 实时视频处理设计问题

design-patterns - 什么时候使用哪种模式?

design-patterns - 通过 redis 与推拉共享状态

android - 类型 '_InternalLinkedHashMap<String, dynamic>'不是类型转换中类型 'Session'的子类型

.net - 提单服务 : Exception or Method Result?