“原型”是描述自然界事物之间“归类”关系的一种,另外几种关系包括“继承”和“接口”。一般来说,“继承”描述的是事物之间固有的衍生关系,能被“继承”所描述的事物之间具有很强的关联性(血缘)。“接口”描述的是事物功用方面的共同特征。而“原型”则倾向于描述事物之间的“相似性”。从这一点来看,“原型”在描述事物关联性的方面,比继承和接口更加广义。
如果你是Java程序员,上面的例子从继承的角度来考虑,当然不可能用“猫”去继承“虎”,也不可能用“虎”去继承“猫”,要描述它们的关系,需要建立一个涵盖了它们共性的“抽象类”,或者你会叫它“猫科动物”。可是,如果我的系统中只需要用到“猫”和“老虎”,那么这个多余的“猫科动物”对于我来说没有任何意义,我只需要表达的是,“老虎”有点像“猫”,仅此而已。在这里,用原型帮我们成功地节省了一个没有必要建立的类型“猫科动物”。
如果你是Java程序员,上面的例子从继承的角度来考虑,当然不可能用“猫”去继承“虎”,也不可能用“虎”去继承“猫”,要描述它们的关系,需要建立一个涵盖了它们共性的“抽象类”,或者你会叫它“猫科动物”。可是,如果我的系统中只需要用到“猫”和“老虎”,那么这个多余的“猫科动物”对于我来说没有任何意义,我只需要表达的是,“老虎”有点像“猫”,仅此而已。在这里,用原型帮我们成功地节省了一个没有必要建立的类型“猫科动物”。