基本概念:
-
OOD: Object-Oriented Design
-
CoC:Convention over Configuration
-
抽象类和接口区别:
抽象类可以包含具体方法的实现,而接口只能包含方法的声明 -
多重继承:
一个类同时继承多个父类 -
组合:
一个类包含另一个类的对象作为自己的成员变量
特点:表示一种强依赖的关系,对象之间的关系是“包含-被包含”的关系,被包含对象不能离开包含对象而单独存在 -
聚合:
特点:表示一和弱依赖的关系,对象之间的关系是整体-部分”的关系,部分不能离开整体而存在 -
依赖:
特点:表示一种弱依赖的关系,对象之间的关系是“包含-被包含”的关系,被包含对象可以离开包含对象而单独存在 -
重载:
在一个类中定义多个同名的方法,但参数列表不同(答案)/在一个类中定义多个同名的方法,但访问修饰符不同(实际) -
重写:
在子类中实现一个和父类同名、参数列表相同、返回值类型相同的方法 -
封装:
将数据和方法绑定在一起,形成一个独立的、封闭的整体,对外只暴露有限的接口
作用:隐藏对象的实现细节,只暴露必要的接口
提高:安全性/可维护性/可读性代码复用性 -
继承:
子类继承父类的属性和方法,并可以在此基础上添加新的属性和方法
作用:实现代码的重用
提高:代码复用性/安全性/可维护性提高可读性 -
多态:
同一种类型的对象,可以在不同的场合下表现出不同的行为
作用:提高程序的灵活性和可扩展性
设计模式
-
工厂:
通过一个共同的接口来创建一组相关或依赖对象的实例 -
抽象工厂:
用于创建一组相关或相互依赖的对象 -
单例:
保证一个类只有一个实例,并提供一个全局访问点 -
代理:
为一个对象提供一个代理,以控制对这个对象的访问
可以用于实现对象的延迟初始化
访问控制 -
装饰器:
动态地给一个对象添加一些额外的职责
可以在不改变对象结构的前提下,动态地添加对象的职责
将对象分为两部分核心对象和装饰器对象,以动态地给一个对象添加一些额外的职责 -
观察者:
定义对象间的一种一对多的依赖关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新
用于实现对象的回调机制
异步处理 -
策略:
定义一系列的算法,将每一个算法封装起来,并使它们可以相互替换
封装一系列的算法对外暴露统一的接口,让算法的选择与算法的实现分离开来 -
模板方法:
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中
将一个算法的骨架和具体的步骤实现分离,使得子类可以在不改变算法结构的情况下重新定义算法中的某些步骤
用于定义一个操作中的算法的骨架,而将一些步骤延迟到子类中 -
迭代器:
提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示 -
命令:
将一个请求封装成一个对象,从而可以用不同的请求对客户进行参数化
定时调度
将一个请求封装成个对象,从而使得可以用不同的请求对客户进行参数化,并支持请求的排队和记录日志等功能 -
责任链:
为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求 -
访问者:
表示一个作用于某对象结构中的各元素的操作,可以在不改变各元素的类的前提下定义作用于这些元素的新操作 -
中介者:
用于解决对象之间的耦合问题 -
解释器:
给定一个语言,定义它的文法的一种表示并定义一个解释器,这个解释器使用该表示来解释语言中的句子 -
备忘录:
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态
版本控制 -
适配器:
将一个类的接口转换成客户希望的另一个接口
用于将一个类的接口转换成客户希望的另一个接口 -
组合:
可以用于实现对象的动态组合 -
状态模式:
用于实现对象的状态转换
将对象的行为分离出来,封装成独立的对象,让相同的行为可以共享 -
享元:缓存
-
外观:
将一个系统的各个部分分离出来,从而可以独立地改变它们,而不会对其他部分产生影响 -
建造者:
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
数据结构:
-
类是一种抽象数据类型,它定义了一组属性和方法,用于描述一类对象的行为和状态。
-
基本模式类型:
A.创建型模式
B.结构型模式
C.行为型模式