• 面向对象编程原则


            程序猿要想设计出高内聚、低耦合、易扩展、易维护、易测试的面向对象系统。一般需要遵循面向对象编程的七大原则。但这并不是说一定要遵循七大原则,但很多场景下需要程序员权衡利弊,进行取舍。选取最适合的方案,而不是一味遵循七大原则。

            接下来来介绍何为面向对象编程的七大原则。

    单一职责原则

            单一职责原则(SRP:Single responsibility principle),设计创建的对象,必须职责明确,比如商品类,里面相关的属性和方法都必须跟商品相关,不能出现订单等不相关的内容。这里的类可以是模块、类库、程序集,而不单单指类。一个类应该只有一个引起它变化的原因,即一个类只负责一项职责。这样可以降低类的复杂度,提高类的可维护性和可测试性。

    里式替换原则

           里式替换原则 (LSPxLiskov Substitution principle)子类能够完全替代父类,反之则不行。通常用于实现接口时运用。因为子类能够完全替代基(父)类,那么这样父类就拥有很多子类,在后续的程序扩展中就很容易进行扩展,程序完全不需要进行修改即可进行扩展。比如IA的实现为A,因为项目需求变更,现在需要新的实现,直接在容器注入处更换接口即可.

    迪米特法则

          迪迷特法则(LoD:Law of Demeter, ) 即最小原则,或者说最小耦合。通常在设计程序或开发程序的时候,尽量要高内聚,低耦合。当两个类进行交互的时候,会产生依赖。而迪米特法则就是建议这种依赖越少越好。就像构造函数注入父类对象时一样,当需要依赖某个对象时,并不在意其内部是怎么实现的,而是在容器中注入相应的实现,既符合里式替换原则,又起到了解耦的作用。个软件实体应当尽可能少地与其他实体发生相互作用。即一个对象应该对其他对象有尽可能少的了解,不和陌生人说话。

    开闭原则

            开放-封闭原则(OCP:The Open-Close Principle)开放扩展,封闭修改。软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。即当需求发生变化时,应该通过扩展来实现新的功能,而不是修改原有的代码。

    依赖倒置原则

            依赖倒置原则(DIP:Dependency Inversion Principle),高层模块不应该直接依赖于底层模块的具体实现,而应该依赖于底层的抽象。接口和抽象类不应该依赖于实现类,而实现类依赖接口或抽象类。

    接口隔离原则

           接口隔离原则(ISP:Interface Segregation Principle),一个对象和另外一个对象交互的过程中,依赖的内容最小。也就是说在接口设计的时候,在遵循对象单一职责的情况下,尽量减少接口的内容。客户端不应该依赖于它不需要的接口。即一个类应该只依赖于它需要的接口,而不是依赖于整个接口集合。

    组合复用原则

            组合/聚合复用原则(CRP:Composite Reuse Principle),优先使用组合或聚合关系,而不是继承关系来达到代码复用的目的。通过对象组合可以更灵活地实现代码复用。

    简洁版七大原则概要

    • 单一职责:对象设计要求独立,不能设计万能对象。
    • 开闭原则:对象修改最小化。
    • 里式替换:程序扩展中抽象被具体可以替换(接口、父类、可以被实现类对象、子类替换对象)
    • 迪米特:高内聚,低耦合。尽量不要依赖细节。
    • 依赖倒置:面向抽象编程。也就是参数传递,或者返回值,可以使用父类类型或者接口类型。从广义上讲:基于接口编程,提前设计好接口框架。
    • 接口隔离:接口设计大小要适中。过大导致污染,过小,导致调用麻烦。
    • 组合复用:尽量使用组合对象,而不是继承来达到复用目的。

    顺口溜:组里依接迪开单(组里依姐弟开单)

    更多消息资讯,请访问昂焱数据(https://www.ayshuju.com)

  • 相关阅读:
    day60
    移动流量的爆发式增长,社交电商如何选择商业模式
    The DAO众筹事件与以太坊分叉
    邓俊辉《数据结构》→ “2.6.5 二分查找(版本A)”之“成功查找长度”递推式推导
    各GIS软件添加天地图方式
    使用 pm2 启动 nodejs 服务
    低度酒赛道进入洗牌期,新品牌如何破局三大难题?
    【JVM】对象创建与访问
    Qt 日志模块的个性化使用
    技术架构职责和应该注意哪些
  • 原文地址:https://blog.csdn.net/tszc95/article/details/134065556