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):用抽象构建架构,用实现扩展原则;

单例模式?

单例就是该类只能返回一个实例。单例所具备的特点:

  1. 私有化的构造函数
  2. 私有的静态的全局变量
  3. 公有的静态的方法
    单例分为懒汉式、饿汉式和双层锁式饿汉式:
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;
}
}

猜你喜欢

转载自blog.csdn.net/qq_39899164/article/details/107500264
今日推荐