** 合成(组合)/聚合复用原则:尽量使用合成/聚合,尽量不要使用类继承。**<br /> 因为对象的继承关系是在编译时就定义好了,所以无法在运行时改变从父类继承的实现。子类的实现与它的父类有非常紧密的依赖关系,以至于父类实现中的任何变化必然会导致子类发生变化。当需要复用子类时,如果继承下来的实现不适合解决新的问题,则父类必须重写或被其他更合适的类替换。这种依赖关系限制了灵活性并最终限制了复用性。<br /> 优先使用对象的合成(组合)/聚合将有助于保持每个类被封装,并被集中在单个任务上。这样类和类继承层次会保持较小规模,并且不太可能增长为不可控制的庞然大物。<br /> 例如:手机品牌为父类,继承子类有手机品牌M,手机品牌N,它们又为父类被继承,又有各自品牌下的通讯录、游戏。如果增加很多品牌很多功能就会变成庞然大物。<br /> 所以手机品牌和手机软件它们之间是聚合关系。<br />** 继承是一种强耦合的结构,父类变,子类就必须要变。所以在使用继承的时候,一定要在是‘is-a’的关系时再考虑使用,而不是任何时候都去使用。**<br /> is-a从字面上看就表示"是一个"的意思,根据继承的特性一个派生类对象可以看成是一个基类对象,也就是说一个派生类对象"是一个"基类对象,所以这种名称符合对这种特性的概括。它没有所谓的全称,这是一种约定俗成的说法。与此对应还有一种类与的类的关系叫has-a,表示"有一个",这种关系就是组成关系,指的是一个类将另一个类的对象作为自己的数据成员。<br />
