Design patterns 设计模式:什么是类型
这是一个非常基本的问题,但在阅读了《设计模式:可重用OO软件的元素》一书之后,我有点困惑 书中说, “对象的类型仅指其 接口请求集,该请求集 它可以响应。一个对象可以有 许多类型,以及不同类型的对象 类可以具有相同的类型。”Design patterns 设计模式:什么是类型,design-patterns,types,Design Patterns,Types,这是一个非常基本的问题,但在阅读了《设计模式:可重用OO软件的元素》一书之后,我有点困惑 书中说, “对象的类型仅指其 接口请求集,该请求集 它可以响应。一个对象可以有 许多类型,以及不同类型的对象 类可以具有相同的类型。” 有人能更好地解释一下a型是什么吗?我也不明白为什么一个对象可以有多种类型……除非这本书提到多态性……从这个意义上讲,类型不一定是对象的实际类型 它讨论的是对象所提供服务的类型。这可能是具有多个继承的多个类型,也可能是具有多个接口的实际类型 例如,在Java下,您可能有一个应
有人能更好地解释一下a型是什么吗?我也不明白为什么一个对象可以有多种类型……除非这本书提到多态性……从这个意义上讲,类型不一定是对象的实际类型 它讨论的是对象所提供服务的类型。这可能是具有多个继承的多个类型,也可能是具有多个接口的实际类型 例如,在Java下,您可能有一个应用程序类(及其实际类型),它还提供一个独特的用户输入界面(键盘和鼠标I/O) 这是一个对象具有多种类型的示例
具有相同“类型”的多个对象的示例(在您的引用中)是您的经典几何图形类,如
正方形
,矩形
,圆形
等等。所有这些不同的对象都可能具有相同的“类型”,因为它们的接口由setPosition()
、setSize()
和drawShape()
将类型视为契约。假设你有一个动物园,里面有很多动物
好吧,对于你拥有的任何动物,你都可以确保它们有一个指定的笼子(例如)。如果动物是哺乳动物,你可以了解哺乳动物的具体情况。如果他们是游泳运动员,你可以得到他们所游的水的温度等等
在本例中,您将拥有许多类型的IEntity、IMammal和ISwimmer以及给定的对象,例如企鹅的IEntity和ISwimmer类型。请记住类型contract的相似性,这就是为什么类型说明了给定对象可以响应的请求,就像一个contract说明了对于一个特定的contract任务,您可以做什么和不能做什么一样
希望我的回答有帮助可能是一个有助于澄清的例子。我假设类是一种特殊的类型
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