比如有A,B两个类,而C类由A,B组合而来
这就是组合模式,有点类似零件的拼装。
class A
{
};
class B
{
};
class C
{
A a;
B b;
};
class Person{
public run(){...}
};
class Student : Person{
};
这叫继承。但是这样会有很多问题,派生类和基类被紧紧的绑在一起,高度耦合。
class Runable {
public run(){...}
};
class Student {
private:
Runable* pRun;
public:
Student() { pRun = new Runable; }
run() { pRun->run(); }
};
这叫组合。当然这只是个简单的例子,从这个例子几乎看不出组合的优越性,不过在很多情况用组合代替继承会带来很大灵活性。