1.面向对象部分基础知识

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38331606/article/details/87965559
  1. 面向对象部分基础知识
    1. 接口和抽象类的使用场景

对于时间要求比较高,或者希望将其行为规范在继承层次中,则使用抽象类来实现;

接口中一般用于定义行为,而抽象类中一般用于定义默认的实现。

    1. 接口的意义

接口提供了一种抽象的概念,其实现类可以多重实现,即实现多个接口。如List接口,可以使用随机访问的ArrayList,也可以使用方便插入删除的LinkedList.

    1. 设计模式原理的理解

使用面向对象的原理,通过抽象的方式,实现开闭原则,同时子类避免去实现父类的非抽象方法。同时一个抽象中的方法在满足单一职责原则的前提下,尽可能的少,以防止其实现类中方法的冗余(即出现了类中无意义的方法);同时两个模块之间应避免直接的关联,以降低耦合,可采用依赖倒置的原则(依赖于其抽象)。

    1. 职责扩散的理解

如果类T负责职责P,而职责P由于某种原因,被分为更加细粒的职责P1,P2;按照RSP原则,此时需要将类T拆分为T1,T2,在程序已经完成的情况下,拆分将比较浪费时间。此时允许在类T中,通过if-else的方式实现逻辑。但伴随着职责扩散的加剧,代码的风险将递升。

    1. 浅拷贝和深拷贝

浅拷贝:Object类提供的方法clone只是拷贝本对象,其对象内部的数组、引用对象等都不拷贝,还是指向原生对象的内部元素地址,这种拷贝就叫做浅拷贝,其他的原始类型比如int、long、char、string(当做是原始类型)等都会被拷贝。

注意: 使用原型模式时,引用的成员变量必须满足两个条件才不会被拷贝:一是类的成员变量,而不是方法内变量;二是必须是一个可变的引用对象,而不是一个原始类型或不可变对象。

深拷贝:对私有的类变量进行独立的拷贝    

如:thing.arrayList = (ArrayList<String>)this.arrayList.clone();

    1. 六大关系
      1. 继承关系(实现三角箭头)

继承指的是一个类(称为子类,子接口)继承另外的一个类(成为父类,父接口)的功能,并可以增加它自己的新功能的能力。

      1. 实现关系(虚线三角箭头)

一个class类实现interface接口(可以是多个)的功能,实现是类与接口之间最常见的关系。

扫描二维码关注公众号,回复: 6480572 查看本文章
      1. 依赖关系(虚线箭头)

类B作为参数,在类A中,被某个方法中使用。

这种使用关系是具有偶然性的、临时性的、非常弱的

      1. 关联关系(实现箭头)

类B作为成员变量或者全局变量,出现在类A中。

      1. 聚合关系(菱形实现箭头)(小明-人群)

聚合关系是关联关系的一种特例,它体现的是整体与部分的关系,即has-a关系。比如人群和单个人的关系,雁群与单只雁的关系。整体和部分是可以相互分离的,有各自的声明周期。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。

      1. 组合关系,强聚合关系(人-大脑)

组合是关联关系的一种特例,它体现的是整体与部分的关系,即contains-a关系。比如人和人的大脑。整体和部分是不可以相互分离的,即整体的生命周期的结束意味着部分生命周期的结束。

    1. 组合>聚合>关联>依赖

依赖是耦合度最低的一种关系,通常指一个类A的方法method(),依赖于另一个类B,通常将类B作为method(B b)的参数。

关联是指两个对象之间彼此有关系,即将类B作为类A的属性形式进行调用。关联分为两种特殊情况,聚合以及组合,通常是根据语义来进行区分的。如果A包含B,且两者的生命周期没有关系,如人群和张三,则属于聚合关系。如果B是A的一部分,且类B的生命周期随A结束而结束,如大脑和头,则是组合关系。

四者之间的耦合度大小关系为:组合>聚合>关联>依赖

    1. UML图

 

设计模式大纲 https://blog.csdn.net/qq_38331606/article/details/87965558

猜你喜欢

转载自blog.csdn.net/qq_38331606/article/details/87965559