设计模式总述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_42331540/article/details/102700392

设计模式常见的面试题:

1:设计模式的6个原则(开闭原则最好说明含义)

2:单例模式的手撕(双重检验的写法是重点)

3:代理模式(AOP的底层实现),代理模式中的jdk和cglib优缺点和适用场景

4:在实际的开发中具体用到了什么模式,什么样的业务场景用到设计模式

一:设计模式的概念:

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。【来自:https://blog.csdn.net/qq_36330643/article/details/71703048】
 

二:设计模式的原则

单一职责原则:一个类只做一件事

开闭原则:对扩展开放,对修改关闭

里氏代换原则:程序中能出现父类的地方一定可以被子类取代,而且替换为子类也不会产生任何异常。这就要求子类必须完全实现父类的方法,即在类中调用其他类时务必要使用父类或者接口。但反过来就不成立,因为子类可以有自己的个性。

接口隔离原则:建立单一接口,不要建臃肿接口,接口应该尽量的细化,同时接口中的方法应该尽量的少。

依赖倒置原则:模块之间的依赖通过抽象发生,实现类之间不发生直接的依赖关系;抽象类和接口不依赖实现类;实现类依赖接口或者抽象类。

迪米特法则:尽量减少类之间的关联,降低耦合性。做到高内聚低耦合。

三:设计模式的分类(仅总结面试常问的设计模式,完整版请自行百度)

创建型:单例模式,简单工厂,工厂方法,抽象工厂,原型模式

行为型:责任链,观察者,策略,模板,迭代

结构型:代理模式,装饰模式

四:几种设计模式的比较

1.静态代理,动态代理区别:

静态代理:代理对象和目标对象实现一样的接口;

动态代理:利用JDK的API动态的在内存中构建代理对象,实现对目标对象的代理功能,代理对象不需要实现相同的接口,但是目标对象必须实现接口;

静态代理在类加载的时候就已经实现,编译完成后代理类是一个class文件,而动态代理是在运行时动态生成,即编译后没有实际的class文件,而是在运行时动态生成类字节码,并加载到JVM中。

2.代理模式VS装饰模式:

装饰模式是代理模式的一个特殊应用,两者的共同点是都具有相同的接口,但是代理模式着重的是对代理过程的控制,代理类负责接口限定,即是否可以调用真实角色,以及是否对发送到真实角色的消息进行变形处理,不会对真实角色的功能做任何处理,保证原汁原味的调用,而装饰模式则是对类的功能进行加强,保证被修饰的对象功能比原始对象丰富,但不做准入条件判断和准入参数的过滤。

猜你喜欢

转载自blog.csdn.net/weixin_42331540/article/details/102700392
今日推荐