OO的原则

为什么要引入OO的原则:

  软件开发是一个有矛盾需求的工作,比如:

    1. 希望尽早发现错误。最好是在编译期就把所有的错误找出来。

    2. 希望开发的东西灵活,具有通用性。因此,就有了多态。

    很显然,1,2是矛盾的。要运行时的灵活,那么问题的出现就要推迟到运行时,在编译期是发现不了的。为了平衡这些矛盾,就有人提出来了一些面向对象设计要考虑的原则。  

 

 

Open-Close.

    不要修改已有代码,可以增加新功能。

    生活中关于open-close的例子: 具体问题具体分析。“具体问题”就是一个抽象的术语。不需要修改这句话,就可以用来作为处理任何具体问题的开头,如房价过高的问题。。。。

    完全符合open-close原则的代码是不存在的。即不通过修改已有代码,只新加代码就可以新增功能是做不到的。

    实现思路:抽象是关键。因此引入了后面的一些原则,liskov substituation,  dependency inverstion, single responsibitly, interface segregation

 

 

Liskov Substituation:

   指出了合理继承的判断标准。所以我们代码里面有类似 if (typeof(base) == typeof (derivied)), if (dynamic_cast<derived*> (pBase) != NULL).... 就不符合liskov Substituation

 

Dependency inversion:

   指出如何使用接口来达到open-close的原则

 

Single Responsibitly:

   指出了接口的粒度。一个接口只能有一个引起变化的因素。

 

interface segregation:

   指出接口的分类原则。引起两个接口变化的因素应该是来自不同维度的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值