面向对象设计的基本原则

面向对象设计的基本原则

2010-07-24


          之前喜欢读书,看到精彩也喜欢做笔记,每读完一本书也都会做总结,但总感觉记在本上的笔记内容还是不够详尽,尤其对那些需要图示的东西就更不能得心应手,因此决定从今天起开始写个人博客,因此这篇便是开山之作。博客目的:A、记录本人学习心得  B、如有同道也可交流。

       面向对象设计基本原则虽简单数语,但每每思来均有会意,不是简单记住几句原则就可说会OOD了。个人理解几条基本原则之间还是有某种关系,因此便设想将他们之间的这种关系逐一细究。


       原则一:OCP-开放、封闭原则:面对扩展是开放的,面对修改是封闭的。

       只所以会有这条原则,原因在于客户的需求经常会发生变化,因此我们不能假设所有的需求都是一成不变的,而OCP原则正是为了应对这种需求的变更和扩展。而且这条原则是其它所有原则的根本大法。

       原则二:SRP-单一职责原则:一个类应该只有一个发生变化的原因。

       这条原则是实现OCP的基础。通过该原则可以将变化点进行分离,进而更易于将变化点进行封装和抽象。

        原则三:DIP-依赖倒置原则:抽象不应该依赖于细节,细节应该依赖于抽象。即要针对接口编程,而不要针对实现编程。

        这条原则真正保证了系统的可扩展性,因为都是针对接口编程,只要接口保持不变,具体实现模块就可以很容易被新功能替换掉。

        原则四:LSP-里氏替换原则:子类必须能够替换掉它们的父类。

        因为子类和父类之间是一种IS-A的关系,因此父类具有的特性子类也一定具有,这样才能够利用多态机制真正实现针对接口编程的统一性。因此子类一定不要覆盖父类的非虚函数行为,因为这有悖于 IS-A的关系。

        原则五:优先使用组合而不是继承

        由于继承机制破坏了类的封闭性,因此能用组合的地方不要用继承。

        今天先简单写这些,后续逐步完善……

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值