设计模式:什么是类型

时间:2010-12-28 05:53:51

标签: design-patterns types

一个非常基本的问题,但在阅读“设计模式:可重复使用的OO软件的元素”一书之后,我有点困惑。

这本书说明了,

  

“对象的类型仅指其对象   interface-要求的集合   它可以回应。一个对象可以有   许多类型和不同的对象   类可以具有相同的类型。“

有人可以更好地解释什么是类型?我也不明白一个对象如何有多种类型......除非这本书讲的是多态性......

3 个答案:

答案 0 :(得分:1)

这种意义上的类型不一定是实际类型的对象。

它在谈论对象提供的服务意义上的类型。这可能是具有多重继承的多种类型,也可能是具有多个接口的实际类型。

例如,在Java下,您可能有一个应用程序类(具有其实际类型),它还提供了一个独特的用户输入接口(键盘和鼠标I / O)。

这是一个具有多种类型的对象的例子。

具有相同“类型”(在您的引用意义上)的多个对象的示例是您的经典几何形状类,如squarerectanglecircle等等。所有这些不同的对象可能具有相同的“类型”,因为它们的界面由setPosition()setSize()drawShape()组成。

答案 1 :(得分:1)

可能是一个有助于澄清的例子。我假设类是一种特殊的类型。

  class Dog : Animal {...};
  class Fish : Animal {...};
  Dog lassie = new Dog();  
        // An object can have many types: 
        // lassie is a dog and an Animal

  Fish nemo = new Fish();  
    // objects of different classes can have the same type: 
    // lassie and nemo are animals

答案 2 :(得分:0)

将类型视为合同。假设您有一个动物园,并且您有一定数量的动物。

嗯,对于你拥有的任何动物,你可以确保他们有一个指定的笼子(一个例子)。如果动物是哺乳动物,您可以获得哺乳动物的细节。如果他们是游泳运动员,你可以获得他们预先设定的水的温度,等等。

在这种情况下,你会有很多类型IEntity,IMammal和ISwimmer以及一个给定的对象,例如企鹅类型为IEntity并且类型为ISwimmer。请记住类型契约的类比,这就是类型说明给定对象可以回复的请求的原因,就像合同说明你可以做什么以及你不能为特定的合同任务做什么。

希望我的回答有帮助