复用-组合、继承、代理区别和用法

本文探讨了Java中代码复用的三种方式:组合、继承和代理。组合通过对象引用调用方法,实现部分与整体的关系;继承允许子类继承父类非private属性和方法,描述“is-a”关系;代理则是介于组合和继承之间,通过创建父类对象并选择性开放接口。理解这三种方式有助于选择合适的代码复用策略。

继承主要有两个作用:
1.为导出类提供方法,这个特性在代码复用有比较多的应用
2.表现导出类与基类之间的关系。这个特性在多态里非常有用,后面会讲到。
我们先来讲为导出类提供方法这个特性——继承是代码复用中重要的一种方式,很难把它与复用割裂开看,而且放在一起比较似乎更容易理解继承在为导出类提供方法这方面的用途以及与其他两种方式的区别。那么这一篇我们讲组合&继承&代理——代码复用的思想实现。

复用代码主要有组合、继承、代理几种方式。关于这几种方式的使用,简单来说就是:
1.组合:在新类中嵌入某个对象,通过引用调用它的方法获得其功能,但是新类的用户看到的只是新类所定义的接口;
2.继承:从基类继承获得基类的全部非private属性和方法,即拥有与基类相同的特性。
3.代理:组合和继承的“中间”方法,嵌入其基类,然后在导出类的方法中通过基类的引用调用其方法获得功能,对外提供的还是导出类的方法
下面结合例子具体来讲讲组合、继承、和代理。

(一、组合
在编写代码过程中,将对象引用置于新类中的做法就是组合。新类只是需要它的功能,但是两者没有什么关联——组合体现的是一种整体与部分,一种拥有的关系。类似于现代化组装,每个对象都是一个零件,拥有各自的功能,组合起来的新类才是我们需要的产品,但是我们不需要去了解每一个零件。就比如造一台手机,用到CPU、GPU、ROM、等等。
如:

public class mobilePhone{
    private MobilePhone mobilePhone{
          CPU cpu = new CPU();
          GPU gpu = new GPU();
          ROM rom = new ROM();
    }
}

组合的优点:  
1.当前对象只能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值