面向对象的部分几点设计原则

下面开始纸上谈兵,o(∩_∩)o   ,面向对象这个概念并不难,但是要恰当或是说完美的设计并不是一件容易的事情。这需要长期的经验和思考。就像悟道一样,是需要一点一点悟出来的。并不是没有什么经验的情况下,听某位大师的三言两语就能醍醐灌顶的。我现在也算是刚刚入道而已。所以的我理解也不是特别深刻。多看多写多思考,总是会有进步的。

1.封装变化

就是在程序中,用以变化的部分要封装起来,这样当需求变化时,可以很用以的更换封装的模块。

2.多用组合,少用继承

是少用继承,而不是不用。没有继承,那就不叫面向对象了。之所以要多用组合,是因为组合更有弹性,而且组合是可以在运行时进行的。继承只能在编译期进行。还有一个问题就是如果父类变化时,所有子类也会继承变化,如果很不幸子类很多时,你也很难把握这种变化会不会给子类带来问题。当然,合乎逻辑且安全稳定的继承还是必须的。

3.面向接口编程,而不是面向实现编程

在很多情况下,你需要的并不是一个类的全部成员,而只用到它实现的某个接口的成员,那就把它向上转型(UpCasting)为这个接口的实现,这样,就能屏蔽那些无用成员的干扰,更重要的是,你声明的那个对象不仅仅可以被更换为同一个类的对象,还可以灵活地更换为所有该接口的实现,是不是很酷?

4.高内聚,低耦合

这个是面向对象最基本的要求。面向对象作为对现实世界的模仿,我认为一切还是在符合逻辑条理清晰的条件下设计的。高内聚,是把类所有的符合逻辑的东西统统封装在一起,对外隐藏实现细节,只暴露最少的最简单完成全部任务的成员。低耦合,是类与类之间的依赖要降到最低。前面说的继承的耦合度就大大高于组合,所以才尽量多用组合,少用继承。

5.对扩展开放,对修改关闭

做任何一个项目,都不是一蹴而就的。都是功能由多变少,越来越完善。所以能够容易的扩展功能是设计的重要目标之一。对修改关闭,和扩展开放并不矛盾。对于已经经过充分测试的模块,最好不要去动它。修改成熟的代码是风险很高的操作,极有可能出现未知Bug。牵一发而动全局,结果是往往很难预料的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值