Java如何保证接口的可扩展性,设计模式——面向接口编程之柔性多态增强代码的可扩展性...

引言

多态和封装、继承一起作为面向对象的三大特性,无论是Java还是其他面向对象的语言,相信很多人谈起多态可能都不会陌生,绝大多数都可以说出多态的很多知识,可往往在现实项目的开发过程中,这最基本的特性,由于种种原因,常常被人遗忘或者懒得使用,要知道我们编码并不是仅仅追求完成任务,假如说后期的维护升级还是要你来做的话你就会深刻感受到了,笔者最近对接了一位同事的项目深有感触,同时这也是深刻理解设计模式的必修课,所以总结下。

一、多态概述

多态和封装、继承一起作为面向对象的三大特性,无论是Java还是其他面向对象的语言,灵活使用好多态,对于提高我们的编码质量尤其重要,首先多态体现了动态绑定(dynamic binding),即在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法,这就提供了很大的灵活性,同时也利于消除类型之间的耦合度。

1、多态的定义

指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息即函数调用),简而言之就是同样的方法名在不同的对象中可以实现不同的功能

2、多态的条件

要有继承或者实现接口

重写,即子类重写或者覆盖父类的方法

子承父业,即定义父类的引用用子类来赋值初始化

3、多态的实现方式

接口实现,继承父类进行方法重写,同一个类中进行方法重载,在使用的时候使用不同的子类去初始化父类。

二、多态的应用

假如我们有以下的需求:求根据输入的值求长方形、圆形的面积,其中计算长方形面积时要求输入长和宽,计算圆形时只需要半径即可,接下来逐步分享下以多态的思想来解这个题。

首先,所谓面向对象即把一切看成对象,很明显长方形、圆各自可以抽象成为一个Java对象,然后输入值和计算面积可以抽象为方法,首先把他们共性的功能抽象为接口

public interface IShape {

void input();

float getArea();

}

此时我们已经定义了个形状接口,一般来说我们只要分别定义长方形类和圆形类并实现这个IShape接口即可,但是封装性还是不高,因为无论是求哪个形状的面积都得先输入再计算,这是一个流程,于是封装了一个流程类

public class ShapeProcess {

private IShape ishape;

public ShapeProcess(IShape shape){

this.ishape=shape;

}

pu

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值