java面试题汇总五

第四部分 Java SE基础

4.1设计模式和常用的设计模式

 

4.1.1  设计模式就是经过前人无数次的实践总结出的,设计过程中可以反复使用的,可以解决特定问题的设计方案。

提供一个方法获取该实例对象(创建时需要进行方法同步)

工厂模式:Spring IOC就是使用的工厂模式   对象的创建交给一个工厂去创建。      

代理模式:Spring AOP就是使用的动态代理。

 

 

 

 4.1.2  单例模式

这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

一、懒汉模式:构造方法私有化,让除了自己类能创建外其他地方都不能创建

//1.非线程安全懒汉模式,
public class SingletonDemo {
private static SingletonDemo instance;
private SingletonDemo(){
}
public static SingletonDemo getInstance(){
if(instance==null){
instance=new SingletonDemo();
}
return instance;
}
}
//2、 线程安全懒汉模式
public class SingletonDemo {
private static SingletonDemo instance;
private SingletonDemo(){
}
public static synchronized SingletonDemo getInstance(){
if(instance==null){
instance=new SingletonDemo();
}
return instance;
}
}

二、饿汉模式

直接在运行这个类的时候进行一次 loading,之后直接访问。显然,这种方法没有起到lazy loading 的效果,考虑到前面提到的和静态类的对比,这种方法只比静态类多了一个内存常驻而已。

在自己的类中创建一个单实例(饱汉模式是一出来就创建单实例,而饥汉模式是需要的时候才创建)

public class SingletonDemo {
private static SingletonDemo instance=new SingletonDemo();
private SingletonDemo(){
}
public static SingletonDemo getInstance(){
return instance;
}
}

 

 

 4.1.3 设计模式六大原则

1. 单一职责原则(Single Responsibility Principle, SRP) :一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。

2. 开闭原则(Open-Closed Principle, OCP): : 一个软件实体应当对扩展开放 , 对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。

3. 里氏代换原则(Liskov Substitution Principle, LSP) :所有引用基类(父类)的地方必须能透明地使用其子类的对象。

4. 依赖倒转原则(Dependency Inversion Principle, DIP) :抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程

5. 接口隔离原则(Interface Segregation Principle, ISP) :使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。

6. 迪米特法则(Law of Demeter, LoD) :一个软件实体应当尽可能少地与其他实体发生相互作

-----------------------------------------------------------------------------------我是分割线---------------------------------------------把所有的春天都揉进一个清晨----------------------------------------------------------------------------

 

 

 

 

posted @ 2020-03-15 20:11  wanghaing  阅读(134)  评论(0编辑  收藏  举报