Java编程思想 第四版(手码原书+菜鸟笔记) 第一章 1.5 复用具体实现

上一篇: 1.4 被隐藏的具体实现

文中笔记均为个人观点,如有错误请大家不吝指出,谢谢!
原书为《java编程思想 第四版 中文版》


1.5 复用具体实现

一旦类被创建并被测试完成,那么它就应该(在理想情况下)代表一个有用的代码单元。事实证明,这种复用性并不容易到达我们所希望的那种程度,产生一个可复用的对象设计需要丰富的经验和敏锐的洞察力。但是一旦你有了这样的设计,他就可供复用。代码复用是面向对象程序设计语言所提供的最了不起的有点之一。
最简单地复用某个类的方式就是直接使用该类的一个对象,此外也可以将那个类的一个对象置于某个新的类中。我们称其为“创建一个成员对象”。新的类可以由任意数量、任意类型的其他对象以任意可以实现新的类中想要的功能的方式所组成。因为是在使用现有的类合成新的类,所以这种概念被称为组合(composition),如果组合是动态发生的,那么他通常被称为聚合(aggregation)。组合经常被视为“has-a”(拥有)关系,就像我们常说的“汽车拥有引擎”一样。
汽车拥有引擎
(上面这张UML图用实心菱形表明了组合关系。我通常采用最简单的形式;仅仅用一条没有菱形的线来表示关联1)。
组合带来了极大的灵活性。新类的成员对象通常都被声明为private,使得使用新类的客户端程序员不能访问它们。这也使得你可以在不干扰现有客户端代码的情况下,修改这些成员。也可以在运行时修改这些成员对象,以实现动态修改程序的行为。下面将要讨论的继承并不具备这样的灵活性,因为编译器必须对通过继承而创建的类施加编译时的限制。

笔记:

由于继承在面向对象程序设计中如此重要,所以它经常被高度强调,于是程序员新手就会有这样的印象:处处都应该使用继承。这会导致难以使用并过分复杂的设计。实际上,在建立新类时,应该首先考虑组合,因为他更加简单灵活。如果采用这种方式,设计会变得更加清晰。一旦有了一些经验之后,便能够看出必须使用继承的场合了。


文中会出现,如错字、语句不通、理解偏差等问题,请及时联系或在下方评论指出。我也会尽量按照原书将内容呈献给大家,谢谢!

下一篇: 1.6 继承

  1. 通常对于大多数图来说,这样表示已经足够了,并不需要关心所使用的是聚合还是组合。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值