当CFC相互扩展时,为什么函数只在一个方向上继承?

时间:2011-02-16 00:32:20

标签: inheritance coldfusion coldfusion-9 cfc

我有以下两种CFC:

component extends="Controller" displayName="foo" {
    public void function minifoo() {
    }
}

component extends="Foo" displayName="bar" {
    public void function minibar() {
    }
}

我知道Foo.cfc中的任何功能都可供Bar.cfc使用。但似乎反过来并非如此。我可以在Bar.cfc中使用Foo.cfc中的函数吗?或者继承只能以一种方式工作?

2 个答案:

答案 0 :(得分:5)

继承仅在名称暗示的一个方向上起作用。 父亲继承儿子有点困难。 ;)

你有一些常见的功能,你想要广泛使用,你可能需要看看某种形式的助手或依赖注射。

如果它不常见但特定于父母和那么您可能需要查看您的应用程序结构,这两个CFC之间的关系以及功能实际存在的位置。

答案 1 :(得分:4)

不,继承不起作用。

尝试Dependancy Injection,基本上......

f = new Foo();
b = new Bar();
f.setBar(b);
b.setFoo(f);

如果需要,像ColdSpring或Lightwire或Wirebox这样的框架可以帮助您。

然后他们可以互相交谈,但你应该想一想,如果那真的是你想要的话。也许你想以不同的方式设计它们。

相关问题