设计模式

设计模式

概述
软件设计模式(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对象返回调用位置
}
}
posted @ 2020-10-27 23:27  Liang-shi  阅读(149)  评论(0)    收藏  举报