java每日5问(第37天)
说一下你熟悉的设计模式?
单例模式:保证被创建一次,节省系统开销。 工厂模式(简单工厂、抽象工厂):解耦代码。
观察者模式:定义了对象之间的一对多的依赖,这样一来,当一个对象改变时,它的所有的 依赖者都会收到通知并自动更新。
外观模式:提供一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层的接 口,让子系统更容易使用。
模版方法模式:定义了一个算法的骨架,而将一些步骤延迟到子类中,模版方法使得子类可 以在不改变算法结构的情况下,重新定义算法的步骤。
状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。
简单工厂和抽象工厂的区别?
简单工厂:用来生产同一等级结构中的任意产品,对于增加新的产品,无能为力。 工厂方法:用来生产同一等级结构中的固定产品,支持增加任意产品。
抽象工厂:用来生产不同产品族的全部产品,对于增加新的产品,无能为力;支持增加产品族。
设计模式的优点?
设计模式可在多个项目中重用。
设计模式提供了一个帮助定义系统架构的解决方案。 设计模式吸收了软件工程的经验。
设计模式为应用程序的设计提供了透明性。
设计模式是被实践证明切实有效的,由于它们是建立在专家软件开发人员的知识和经验 之上的。
设计模式的六大基本原则?
(1) 单一原则(Single Responsibility Principle):一个类只负责一项职责,尽量做到类的只有一个行为原因引起变化;
(2) 里氏替换原则(LSP liskov substitution principle):子类可以扩展父类的功能,但不能改变原有父类的功能;
(3) 依赖倒置原则(dependence inversion principle):面向接口编程; (4)接口隔离(interface segregation principle):建立单一接口;
(5)迪米特原则(law of demeter LOD):最少知道原则,尽量降低类与类之间的耦合; (6)开闭原则(open closed principle):用抽象构建架构,用实现扩展原则;
单例模式?
单例就是该类只能返回一个实例。单例所具备的特点:
- 私有化的构造函数
- 私有的静态的全局变量
- 公有的静态的方法
单例分为懒汉式、饿汉式和双层锁式饿汉式:
public class Singleton1 {
private Singleton1() {};
private static Singleton1 single = new Singleton1(); public static Singleton1 getInstance() {
return single;
}
}
懒汉式:
public class Singleton2 { private Singleton2() {}
private static Singleton2 single=null; public tatic Singleton2 getInstance() {
if (single == null) {
single = new Singleton2();
}
return single;
}
}
线程安全:
public class Singleton3 { private Singleton3() {}
private static Singleton3 single ; public static Singleton3 getInstance() {
if(null == single){ synchronized(single ){
if(null == single){
single = new Singleton3();
}
}
}
return single;
}
}
本文地址:https://blog.csdn.net/qq_39899164/article/details/107500264
推荐阅读
-
撩课-Java每天5道面试题第9天
-
撩课-Java每天5道面试题第11天
-
黑马程序员IDEA版JAVA基础班\JavaWeb部分视频\2-10Request和Response\第5节 request登录案例
-
阿里Java研发第2面,都会问什么?斩获阿里P6+的“他”告诉你答案
-
撩课-Java每天5道面试题第15天
-
撩课-Java每天5道面试题第25天
-
Java经典编程习题100例:第18例:编写程序,将一个数组中的元素倒排过来。例如原数组为1,2,3,4,5;则倒排后数组中的值
-
Java程序设计基础笔记 • 【第5章 循环结构】
-
java编程思想练习题-第5章练习8-this实现细节详解
-
Java每日一练(5)