3、面向对象设计:原理、模式与实践

面向对象设计:原理、模式与实践

1. 设计原则

在进行系统设计时,应精准地对系统需要执行的任务进行建模,而非尝试对未来可能有用的对象或动作建模。这样设计会自然地趋向于具有适当抽象级别的方案。不过,这并不意味着我们无需考虑未来可能的设计修改,设计应具有开放性,以满足未来的需求。在抽象接口时,要确保只对真正需要的内容进行建模,避免过度设计。

设计接口时,可将自己置于对象的立场,假定对象十分注重隐私。除非认为对其他对象公开数据符合自身最大利益,否则不要让它们访问这些数据。同样,除非确定希望其他对象能够强制自己执行特定任务,否则不要为它们提供相应的接口。

2. 组合

到目前为止,我们学会了将系统设计为一组相互交互的对象,每次交互都涉及在适当的抽象级别上看待对象。但我们还不知道如何创建这些抽象级别。有多种方法可以实现这一点,不过大多数设计模式都依赖于两个基本的面向对象原则:组合和继承。由于组合相对简单,我们先从它开始介绍。

组合是将多个对象组合在一起以创建一个新对象的过程。当一个对象是另一个对象的一部分时,组合通常是一个不错的选择。以汽车为例,汽车由发动机、变速器、起动机、前照灯和挡风玻璃等众多部件组成,而发动机又由活塞、曲轴和气门等组成。在这个例子中,组合是提供抽象级别的有效方式。汽车对象可以为驾驶员提供所需的接口,同时也能让机械师访问其组件,从而提供更深入的抽象级别。如果机械师需要更多信息来诊断问题或调整发动机,这些组件还可以进一步细分。

然而,这个常见的组合示例在设计计算机系统时并非十分有用。物理对象很容易分解为组件对象,自古希腊人最初假设原子是物质的最小单位以来,人们就一直在这样做。计算机系统通常比物理对象简单,但识别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值