面试准备之设计模式

今天北京暴雪,2019-12-16  星期一,被套了大半年的万科终于回本了

设计模式的六大原则


总原则-开闭原则:对修改关闭,对扩展开发。

里氏替换原则:在继承类的时候,除了对父类进行一些功能的扩展外,尽量不要重载父类的方法。我们经常用父类承接子类对象,当重载父类方法后,如果有一处想调用父类原来的方法,但是实际这个父类指向的是子类对象的话,由于方法被重载,所以有可能出现意想不到后果。

单一原则:一个类的功能尽量要单一,让一个类实现一个功能,让代码解耦。

依赖倒转原则:编程依赖接口而不依赖具体的类来编程。

最少知道原则:一个类对它所引用的类知道的最少,只需要知道自己要调用的方法,至于它内部如何实现的不需要关心。

接口隔离原则:在定义接口的时候,应该追求简单最小化,避免接口臃肿或者出现两个功能变化而出现需要修改接口的情况。

 

类与类之间的关系

依赖关系

依赖关系是指一个类调用另外一个类作为局部变量或者是方法参数来完成某一些功能,而不是作为类的属性,依赖关系是类和类之间最弱的一种关系,不要被它的名字给迷惑了。用虚箭头来表示依赖关系
面试准备之设计模式_第1张图片

关联关系

类与类最常见的一种关系,就是一个类作为另外一个的属性,也就是成员变量来调用。用实箭头来表示。
面试准备之设计模式_第2张图片

聚合关系

一种强关联关系,表示整体和部分的关系,但是部分可以不依赖整体而单独存在。聚合关系也是通过成员对象来实现的,其中成员对象是整体对象的一部分,但是成员对象可以脱离整体对象而独立存在。例如,学校与老师的关系,学校包含老师,但如果学校停办了,老师依然存在。用空心菱形箭头表示。

面试准备之设计模式_第3张图片

组合关系

一种比聚合关系还要强的强关联关系。也是一个类作为另外一个类的成员变量来实现。在组合关系中,整体对象可以控制部分对象的生命周期,一旦整体对象不存在,部分对象也将不存在,部分对象不能脱离整体对象而存在。例如,头和嘴的关系,没有了头,嘴也就不存在了。用实心箭头表示。

面试准备之设计模式_第4张图片

泛化关系

就是一个类继承另外一个类,类与类最强的一种关系。

面试准备之设计模式_第5张图片

实现关系

接口和类的一种关系,类实现接口

面试准备之设计模式_第6张图片

 

单例模式

单例模式就是在整个工程里面只一个这个类的实例,这样的好处就是加快类的访问,减少空间的浪费,

单例模式有饥汉模式和懒汉模式,其中懒汉模式的可以用双重检测保证线程安全,记得在申明成员变量的时候要加关键字volatitle。

单例模式在Spring中有用到。

工厂方法模式

由抽象工厂,抽象产品,具体工厂和具体产品组成。客户端只需要知道具体工厂就能知道具体的产品,不需要知道产品的创建过程,实现了对象与对象之间的解耦。新增一个产品新增加一个工厂就可以了,符合开闭原则。不好地方在于创建一个新产品就要增加一个具体的工厂。增加了系统的复杂度。工厂模式也在Spring中被用到了。

抽象工厂模式

抽象工厂模式也是由抽象工厂,抽象产品,具体工厂和具体产品组成,只是相比工厂方法模式最大的不同是抽象工厂模式新增加了一个产品族的概念,就是一个工厂能生产多个产品,这多个产品组成一个产品族,就像苹果公司不仅生产苹果手机,也生产苹果笔记本电脑,也生产苹果平板电脑,这些都产品可以看成是苹果系列的,被称为产品族。

建造者模式

建造者模式将类的建造和类的表示想分离,使得同样建造过程创建不同的表示。当一个对象很复杂的时候,可能不是直接new一下就完事了,需要很多部分组装而成,建造者负责建造对象的各个部分,而指挥者负责将组装的建好的各个部分组装起来。比如说一个电脑,要由cpu,主板,硬盘,显示器组成。这个时候就需要找一个具体的建造者去建造这些部件,然后交给一个指挥者将这些部件组装好,才能完成一个电脑的配置。这里指挥者和建造者有一个关联关系,就是指挥者调用建造者建造各个部分,并将各个部分组装起来。分为产品对象,抽象建造者,具体建造者和指挥者。建造者模式工厂模式比较起来的话建造者更在意的是对象的组装过程,而工厂模式更在意的是对象的创建。

适配器模式

适配器模式有目标接口,被适配者,适配器三个组成。当我们组建库里面有这个这个功能的实现类,但这个类的实现接口不符合当前的接口规范的时候,我们需要对这个类做一些包装,让他符合我们的接口规范。适配器分为类结构型模式和对象结构型模式。

 

你可能感兴趣的:(设计模式)