1
试图说抽象: 我尝试为组件和定向连接器的网络设计通用模式。所有提供者都通过连接器连接。 因此,没有损失一般性的,想象组件和连接链(简单网络),我们有这样的事情: COMPA - > ConnectorAB - > CompB的 - > ConnectorBC - > compc命令......等等Cyclomatic泛型代码设计
由于连接器应该是具有某些属性和功能的实际对象,因此我不能仅仅实现类似双链列表的备件。
组件将列表中的输入和输出连接器保存在一个列表中,并且连接器保存其源和目标组件。 我给你我的一个实例运行:
interface Component<In extends Connector, Out extends Connector> { List<In> getIns();...}
interface Connector<S extends Component, T extends Component> { S getSource();...}
interface CompA<In extends Connector<?, CompA>, Out extends Connector<CompA, ?>> extends Component<In, Out> {}
interface CompB<In extends Connector<?, CompB>, Out extends Connector<CompB, ?>> extends Component<In, Out> {}
interface A_A extends Connector<CompA, CompA> {}
interface A_B extends Connector<CompA, CompB> {}
问题:
Component<Connector<Component.......>>>
),而不是我使用原始类型,这是罚款,但无论如何它似乎是混乱的。CompA<In extends Connector<?, CompA>, Out extends Connector<CompA, ?>>
表达的是,我的CompA知道它已连接到针对CompA的连接器。显然这不是我在语法上做的事。 。A_A aa; aa.getSource(); //gives me a CompA, thats great. aa.getSource().getIns(); //gives me a List of raw Connectors, but i would like to have a list of partially defined connectors, they know they are referencing a compA aa.getSource().getIns().get(0).getTarget() // should give me a compA
写我的代码,因为它是,很明显,这并不工作,因为我想它,但是我认为'aa.getSource()getIns();'可以工作作为对在-Type至少是一个连接器的权利? 我在寻求建议来实现这个模式(所以说,纠正我的代码!)。它必须在java中,但我不必只使用java泛型。如果你可以使用非java通用模式来完成这个抽象模式,它可能会很好(基于其他Java语言特性或OO模式的模式)。
我想我错过了很多信息,所以如果有些事情不清楚,请询问。
+1,这正是我以前想到的:) – sp00m 2014-10-02 10:12:29
我必须在判断之前实施一点,但它是完美的!非常感谢你,我可以问你,你是怎么想出来的?它是否立即出现在您的脑海中?或者它实际上是一种已经在任何地方使用过的模式? – user2504380 2014-10-02 12:35:59
@ user2504380自我类型模式('Foo
>',也被称为F-有界量化)是一种相当常见的模式。一旦你有了,剩下的就落在原地。所以,是的,当我阅读你的要求时,解决方案立刻就出现在我的脑海里。但现在你知道自我类型的模式,它也会对你的。 ;) – 2014-10-02 17:32:16