• OOP理解


    https://www.cnblogs.com/xiaosongluffy/p/5072501.html

    OOP是面向对象编程,有几大基础特性。抽象,封装,继承,多态

    1:抽象:将世界上的具体事物提取一些关键的特性(属性和行为),为其建立模型。

    2:封装:将事物的属性和行为封装到一个类中, 通过权限修饰符向外部类和之类提供必需的属性和行为。

    3:继承:对现有类提高复用性,如果一个类继承了现有类,那么它将拥有现有类的非私有方法和属性。

    4:多态:多态是在继承的基础上实现的,多态的三个要素:继承,重写,父类引用指向子类对象。  当父类引用指向子类对象时,指向不同的子类对象,调用相同的方法时,将会有不同的行为。 (因为子类将父类方法重写了)

    在4大基础特向之上,还要遵循7大设计原则。 https://www.cnblogs.com/lanxuezaipiao/archive/2013/06/09/3128665.html

     1:单一责任原则:

          一个类只承担一种责任,

    2:开放封闭原则

    软件实体应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。

    3:里式替换原则

    当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有is-A关系:

    客户模块不应关心服务模块的是如何工作的;同样的接口模块之间,可以在不知道服务模块代码的情况下,进行替换。即接口或父类出现的地方,实现接口的类或子类可以代入

    当一个接口或父类出现的地方,应该能够由子类或实现类进行替换,而不会出现错误。  客户不需要知道服务代码。

    4:接口分离原则

    不能强迫用户去依赖那些他们不使用的接口。换句话说,使用多个专门的接口比使用单一的总接口总要好。

    也就是说子类实现时,接口中不能有多余(子类用不到)的方法。

    5: 依赖注入或倒置原则(DIP)

    5.1. 高层模块不应该依赖于低层模块,二者都应该依赖于抽象 
    5.2. 抽象不应该依赖于细节,细节应该依赖于抽象

    6.组合/聚合复用原则

    组合优先继承原则

    就是说要尽量的使用合成和聚合,而不是继承关系达到复用的目的

    7. 迪米特法则(Law Of Demeter)

       迪米特法则其根本思想,是强调了类之间的松耦合,类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改,不会对有关系的类造成影响,也就是说,信息的隐藏促进了软件的复用。

        自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚。

      迪米特法则又叫最少知道原则,最早是在1987年由美国Northeastern University的Ian Holland提出。通俗的来讲,就是一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类来说,无论逻辑多么复杂,都尽量地的将逻辑封装在类的内部,对外除了提供的public方法,不对外泄漏任何信息。迪米特法则还有一个更简单的定义:只与直接的朋友通信。首先来解释一下什么是直接的朋友:每个对象都会与其他对象有耦合关系,只要两个对象之间有耦合关系,我们就说这两个对象之间是朋友关系。耦合的方式很多,依赖、关联、组合、聚合等。其中,我们称出现成员变量、方法参数、方法返回值中的类为直接的朋友,而出现在局部变量中的类则不是直接的朋友。也就是说,陌生的类最好不要作为局部变量的形式出现在类的内部。

    一句话总结就是:一个对象应该对其他对象保持最少的了解。

    在遵循这些面向对象设计原则基础上,前辈们总结出一些解决不同问题场景的设计模式,以四人帮的gof23最为知名。

    23中设计模式:http://www.cnblogs.com/foryang/p/5849402.html

  • 相关阅读:
    ubuntu 使用ifupdown 进行高级网络设置
    2015 9月27日 工作计划与执行
    2015 9月25日 工作计划与执行
    2015 9月24日 工作计划与执行
    2015 9月23日 工作计划与执行
    ubuntu 安装python3
    leetCode(12):Remove Duplicates from Sorted List 分类: leetCode 2015-06-18 15:48 136人阅读 评论(0) 收藏
    leetCode(11):Reverse linked list II 分类: leetCode 2015-06-18 15:16 154人阅读 评论(0) 收藏
    leetCode(10):Partition List 分类: leetCode 2015-06-18 09:08 105人阅读 评论(0) 收藏
    leetCode(9):Remove Nth Node From End of List 分类: leetCode 2015-06-18 08:15 109人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/liyafei/p/9363941.html
Copyright © 2020-2023  润新知