方法、操作、算法和多态性术语的不同意义

操作和方法
UML是这样定义操作和方法的:
1、操作就是能够被类的实例调用的服务的规范
2、方法则是操作的实现。
操作是在方法之上的抽象概念操作定义类所提供的服务,并给出调用该服务的接口。多个类可以用不同的方法实现同一个操作。例如,很多类都以自己的方式实现toString()操作。而每个类都是通过实现方法来提供某种操作,操作的实现代码构成了类的方法。通过对方法和操作进行定义,我们可以澄清很多设计模式的结构。操作的含义是从方法的概念上抽象而来的。
由于设计模式也是从类和方法升华而来,因而,在很多设计模式中,操作都发挥着非常重要的作用。例如,在Composite模式中,一个操作既被应用于叶节点对象上,又被应用于组合对象上。而在Proxy模式中,一个中介者对象与目标对象具有相同的操作,从而使用得中介者对象可以管理对目标对象的访问。同样,责任链(Chain of Responsibility)模式是在一个对象链上分发某个操作。每个对象的方法要么直接实现该方法的业务,要么将对该方法的调用转发到责任链上的下一个对象。
表面上,操作的含义与签名的含义很类似。
方法签名包括方法名、形式参数的数目和类型。注意,方法签名不包括返回类型。但是,如果一个方法重写了另一个方法,而这两个方法的返回类型不同,那么编译时就会报错。在客户端调用方法时,方法签名指明应该调用哪个方法。操作是可请求的服务的规范。术语签名与操作的含义很类似,但是名字本身并不同义。这两个术语的不同之处主要体现在所使用的上下文环境中。当研究不同类中的方法可能会有相同接口时,使用术语操作。当研究Java如何将一个方法调用映射到接收对象的方法时(具体方法),使用术语签名。签名依赖于方法名和参数,但不依赖于返回类型。
算法和多态性
在某些情况下,算法也许完全包含在一个方法中。但是算法的实现经常依赖于多个方法的相互使用。Introduction to Algorithms(算法导论)给出了算法的定义:算法是定义良好的计算过程,把数据值或者数据集合作为输入,并输出某数据值或者数据集合。算法是一个过程,包含一些指令序列,接收输入,产生输出。单个方法也许是个算法:它接受输入————其参数列表————并产生输出作为返回值。然而,在面向对象编程时很多算法会需要多个方法。算法就是需要完成某项任务的过程。它们也许表现为某方法的一部分,或者调用多个方法。在面向对象应用程序中,需要多个方法的算法经常依赖多态性来充许单个操作的多种实现。
多态性是方法调用关于依赖被调用的操作和调用接收者类的基本原则。比如,你也许关心当Java遇到表达式isTree()时,会执行哪个方法。这关键是看方法的依赖关系。如果对象m是Machine类的实例Java会调用Machine.isTree()。如果m是MachineComposite的一个实例,Java会调用MachineComposite.isTree()。非正式地说,多态性意味着要为合适的对象调用合适的方法。很多设计模式都使用多态性,在某些情况下,多态性与该模式的目标紧紧相连。
总结
操作,类似于方法签名,定义了服务的规范。当谈到许多方法可能会有相同的接口的时候,我们可以使用操作这个术语。当讨论方法查询规划的时候,我们可以使用签名这个术语。
一个方法的定义包括方法签名、修饰符、返回类型以及方法体;而方法签名又包括方法名和参数列表。一个方法通常有一个方法签名,并实现一个操作。启动一个方法的常见方式是调用它。方法结束的常见方式是让它返回,但是对任务程序而言,当遇到不可处理的异常时,任何方法都会停止执行。
算法是一个接收输入并产生输出的过程。方法也接收输入、产生输出,另外它还包含一个过程化的方法体,因此常常有人将方法体看作是一个算法。然而,一个算法的过程可能会涉及很多操作和方法,也可能仅仅是另外一个方法的一部分。算法这个术语最好是在谈到产生某个结果的过程时使用。
很多设计模式都涉及到把一个操作分散到几个类中去。因而我们可以说这些模式依赖于多态性,即具体调用哪个方法依赖于收到调用的对象的类型。不同的类可以用不同的方式来实现同一个操作。换句话说,Java支持多态性机制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值