设计模式

设计模式面试

概述
软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、通过分类编目的、
代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。 单例模式 --Singleton,保证一个类仅有一个实例,并提供一个访问它的全局访问点 --好处是:为了节省内存,为了节省时间 --饿汉式/懒汉式(面试题) --开发步骤: -私有化构造方法,不让外界随便new --本身在类的内部 ,建立一个对象 --提供公共的访问方法,并返回本身建立的对象


//测试 单例设计模式
public class C1{
public static void main(String[] args) {
Hello h = Hello.get();
Hello h1 = Hello.get();

System.out.println(h == h1);//true

Hello2 hello2 = Hello2.get();
Hello2 hello3 = Hello2.get();
System.out.println(hello2 == hello3);//true
}
}
//TODO 懒汉式--面试的重点!!!--延迟加载--线程安全
class Hello2{
private Hello2(){}
//TODO 建立对象的时机晚了!!! --按需加载--延迟加载
static private Hello2 h;
//TODO 共享资源h是静态的,并且被多条语句操做,确定不安全.须要加锁.
// 并且锁对象分配的必须是类名.class才安全
//TODO 锁方法,普通方法的锁对象默认是this.静态方法的锁对象默认就是类名.class
synchronized static public Hello2 get(){
//TODO 锁代码块:想锁静态的共享资源,,锁对象必须也是类名.class
// synchronized (Hello2.class){
if(h == null){
h = new Hello2();//没new过,才new
}
return h;
}
}


//饿汉式 -- 方便使用
class Hello{
//1,私有化构造方法
private Hello(){ }
//加static是由于要被静态的get()调用--静态只能调静态
static private Hello hello = new Hello();
//3,提供一个方法,把hello返回
static public Hello get(){
return hello;//把本身建立好的hello对象返回调用位置 }}
相关文章
相关标签/搜索