- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java面试题汇总java面试题汇总
JSP有九大内置对象?
答:Request,Response,Session,Application,Out,Pagecontext,Config,Page,Exception
2 java设计模式
总体来说设计模式分为三大类:
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
单例模式分三种 懒汉式单例、 饿汉式单例、 登记式单例。
懒汉式单例:需要加锁才能实现多线程同步,但是效率会降低。优点是延时加载。public class LazySingleton {//私有静态变量,加载时不初始化 private static LazySingleton lazySingleton = null; //私有的构造方法,避免外部创建实例 private LazySingleton(){ } synchronized public static LazySingleton getInstance(){ if(lazySingleton == null){ lazySingleton = new LazySingleton(); } return lazySingleton; }}
饿汉式单例: 因为加载类的时候就创建实例,所以线程安全(多个ClassLoader存在时例外)。 缺点是不能延时加载public class EagerSingleton {//私有静态唯一的变量,在类加载好了,就创建了实例 private static final EagerSingleton eagerSingleton = new EagerSingleton(); //私有的构造方法,避免外界创建实例 private EagerSingleton(){ } public static EagerSingleton getInstance(){ return eagerSingleton; }}
登记式单例:登记式单例类是GoF 为了克服饿汉式单例类及懒汉式单例类均不可继承的缺点而设计的。只是它的子类实例化的方式只能是懒汉式的, 这是无法改变的。登记式单例类的一个缺点:(1)由于子类必须允许父类以构造子调用产生实例,因此,它的构造方法必须是公开的这样一来,就等于允许了以这样方式产生实例而不在父类的登 记中。(2)由于父类的实例必须存在才可能有子类的实例,这在有些情况下是一个浪费。这是登记式单例类的另一个缺点。
import java.util.*;public class RegSingleton {//登记薄,用来存放所有的实例 private static Map regSingletonMap = new HashMap(); //在类加载的时候添加一个实例到登记薄 static{ RegSingleton regSingleton = new RegSingleton(); regSingletonMap.put(regSingleton.getClass().getName(),regSingleton); }
//保护的默认构造子 protected RegSingleton(){ } public static RegSingleton getInstance(String name){ if(name == null){ name = RegSingleton; } if(regSingletonMap.get(name) == null){ try{ regSingletonMap.put(name, (RegSingleton)Class.forName(name).newInstance()); }catch(Exception e){ e.printStackTrace();
文档评论(0)