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

原文地址:https://www.cnblogs.com/liyafei/p/9363941.html