七大原则

面向对象的七大原则

  • 单一原则
    概念:就一个类而言,应该仅有一个引起它变化的原用。即一个类应该是一组相关性很高的函数、数据的封装,而两个完全不一样的功能应该放在不用的类中。该原则是实现高内聚、低耦合的指导方针。

  • 开闭原则
    概念:软件中的对象(类、模块、函数等)应该对于扩展是开放的,但是对修改是封闭的。
    实现开闭原则的重要手段的就是“抽象”。

  • 里氏替换原则
    概念:如果对一个类型为A的对象a1,都有类型为B的对象b2,使得以B定义的所有程序P在所有地方的对象a1都换成b1时,程序P的行为没有发生变化,那么类型B是类型A的子类型。另一种定义:所有引用基类的地方必须能透明地使用子类的对象。

    面向对象的语言的三大特性是继承,封装,多态,里氏替换原则就是依赖继承和多态。

    里氏替换原则表明,所有引用基类的地方必须能透明的使用其子类的对象。通俗点讲就是,只要父类能出现的地方子类就可以出现,而且替换为子类的也不会产生错误和异常,使用者可能根本不需要知道是父类还是子类。但是反过来就不一定行,有子类出现的地方,父类未必就能适应。

    里氏替换原则强调子类可以扩展父类的功能,但不能改变父类原有的功能。即应该添加新的方法,而不是重写覆盖父类的方法。

    里氏替换原则的核心原理是抽象,而抽象依靠继承。所以里氏替换原则是实现开闭原则的重要方式之一。

  • 依赖导致原则
    概念:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。

    抽象是指接口或抽象类;细节是指具体实现类;高层模块是指调用端;底层模是指具体实现类。

    具体的一个体现:要求在程序代码中传递参数时或关联关系中尽量引用层次高的抽象层类,即使用接口和抽象类进行声明参数类型声明,方法返回类型,以及数据类型转换等,而不使用具体类型做事情。为了确保该原则的应用,一个具体类应该只实现接口或抽象类中声明过的方法,而不要给出多余方法,否则将无法调用到在子类中增加的方法。

  • 接口隔离原则
    概念:客户端不应该依赖他不需要的接口。另一种定义是:类间的依赖关系应该建立在最小的接口上。

    这里的接口有两种不同的含义:
    1 )一种是指一个类型所有的方法特征的集合,仅仅是一种逻辑上的抽象。说明这个类中的方法应该是一组相关性很高的函数、数据的封装。
    2)另一种是某种语言定义中的接口,有严格的定义和结构。说明接口定义只提供客户端需要的行为。

  • 迪米特原则
    概念:一个对象应该对其他对象有最少的了解。一个类应该定对自己需要耦合或调用的类知道得最少,类的内部如何实现与调用者或依赖者没有关系,调用者或依赖者只需要知道它需要的方法即可,其他的可一概不管用。或者只与直接的朋友通信。直接朋友有:当前对象本身(this);以参数形式传入到当前对象方法中的对象;当前对象的成员对象;如果对象所创建的对象;如果当前对象的成员是一个集合,那么集合的元素都是朋友。

  • 合成复用原则
    概念:优先使用对象组合,而不是通过继承来达到复用的目的。

    继承的缺点:
    1)继承复用会破坏系统的封装性,因为继承会将基类的实现细节暴露给子类。
    2)继承是静态的,在编码时就已经确定了,不灵活。
    3)继承只能在有限的环境中(即类必须得存在)。
    合成最大的优点就是非常灵活。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值