有人可以给我以下OOP概念的名称(如果它确实是OOP概念!):
我有两个班:A& B.两人都说,每种方法都有2种(全部不同)。现在我创建了第三个类,C。现在我想要公开所有的A& B的方法是C.这是一种示范:
class A
int method_in_A_one() {
}
int method_in_A_two() {
}
end
class B
int method_in_B_one() {
}
int method_in_B_two() {
}
end
class C
C() {
A an_instance_of_a;
B an_instance_of_b;
}
}
Now I want to be able to do this:
C instance_of_c = new C;
insance_of_c.method_in_A_one();
insance_of_c.method_in_A_two();
insance_of_c.method_in_B_one();
insance_of_c.method_in_B_two();
我还没有真正使用它,但我确信这是一个特定的概念来处理它。先谢谢你,
答案 0 :(得分:3)
这大约是object composition和delegation:
C
由A
和B
组成)在我所知的语言中,委托是手动完成的 - 你必须在C中声明方法并调用底层对象的相应方法。
请注意,还有另一种方法可以实现这一目标 - 多重继承,尽管您的示例并未完全显示。这意味着C
同时为A
和B
。有些语言虽然禁止这样做,但对象构图无论如何都被认为是更好的做法。
答案 1 :(得分:3)
所以这里有一些事情发生。您的C类型是由A和B类型的组合创建的,这是子类化的常见替代方法。
如果C的目的是为A和B提供更简单的界面,那就是 facade 模式的一个例子。
如果C为其包装对象提供了额外的功能(比如,通过让method_in_A_one的实现在包装对象上调用它之前做一些额外的工作),这将是装饰器模式的一个例子。
如果C将A / B中的概念转换为另一个库所期望的形式(例如:在NSDictionary子类中包装C ++ std :: map以便在Cocoa中使用),那就是适配器图案。
答案 2 :(得分:0)
听起来像是多重继承,或者是一个通用的界面。但不完全像在C中封装A和B,而不是作为基类暴露。