这个OOP概念叫什么?

这个OOP概念叫什么?,oop,terminology,Oop,Terminology,有人能告诉我以下OOP概念的名称吗(如果它确实是OOP概念的话!): 我有两个类:A和B。它们都有两个方法(都不同)。现在我创建了第三个类C。现在我想向C公开a&B的所有方法。下面是一些演示: 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() {

有人能告诉我以下OOP概念的名称吗(如果它确实是OOP概念的话!):

我有两个类:A和B。它们都有两个方法(都不同)。现在我创建了第三个类C。现在我想向C公开a&B的所有方法。下面是一些演示:

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();
我还没有真正的使用它,但我确信有一个特定的概念来处理它。提前谢谢,ell.

这是关于和:

  • 对象组合是指当您的类由其他类组成时(在示例中-
    C
    A
    B
    组成)
  • 委托是指所属类中有一个方法委托给构成类的方法
在我所知道的语言中,委托是手动实现的——您必须用C声明方法并调用底层对象各自的方法

请注意,还有另一种方法可以实现这一点——多重继承,尽管您的示例并没有具体说明这一点。这意味着
C
既是
A
又是
B
。尽管有些语言禁止这样做,但无论如何,对象组合被认为是一种更好的做法。

这是关于和:

  • 对象组合是指当您的类由其他类组成时(在示例中-
    C
    A
    B
    组成)
  • 委托是指所属类中有一个方法委托给构成类的方法
在我所知道的语言中,委托是手动实现的——您必须用C声明方法并调用底层对象各自的方法


请注意,还有另一种方法可以实现这一点——多重继承,尽管您的示例并没有具体说明这一点。这意味着
C
既是
A
又是
B
。尽管有些语言禁止这样做,但无论如何,对象组合被认为是一种更好的做法。

听起来像是多重继承,或是一个公共接口。但这与在C中封装A和B而不作为基类公开的情况不同。

听起来像是多重继承,或是公共接口。但不完全是因为在C中封装了A和B,而没有将它们作为基类公开。

所以这里有一些事情要做。您的C类型是由A和B类型的组合创建的,这是子类化的常见替代方法

如果C的目的是提供一个更简单的接口来使用a和B,那么这就是facade模式的一个例子

如果C为其包装对象提供了额外的功能(例如,通过在包装对象上调用方法_之前,让方法_的实现做一些额外的工作),这将是decorator模式的一个示例


<>如果C将A/B中的概念转换为另一个库所期望的形式(例如:在C++中使用一个C++ STD::在NSCORBA子类中映射),那就是<强>适配器<强>模式。

,所以这里有一些事情。您的C类型是由A和B类型的组合创建的,这是子类化的常见替代方法

如果C的目的是提供一个更简单的接口来使用a和B,那么这就是facade模式的一个例子

如果C为其包装对象提供了额外的功能(例如,通过在包装对象上调用方法_之前,让方法_的实现做一些额外的工作),这将是decorator模式的一个示例


<>如果C将A/B中的概念转换为另一个库所期望的形式(例如:在C++中使用一个C++ STD::在NSCONTURE子类中映射),那就是<强>适配器<强>模式。而不是一个c的实例?是的,对不起,我现在纠正了,谢谢:)我猜你是指一个例子;而不是一个c的实例?是的,很抱歉,我现在纠正了,谢谢:)对潜在模式和构图的很好的解释!很好地解释了潜在的模式和组成!